tsconfig.json 生成器
tsconfig.json 的编译器选项远超一百个,而每篇 TypeScript 教程给出的组合都不一样。这个生成器只聚焦对多数项目真正重要的部分:target、module、moduleResolution、jsx、常用布尔开关(strict、esModuleInterop、skipLibCheck 等),以及 outDir/rootDir 两个目录。每次修改选项,tsconfig.json 预览都会实时更新;把它复制到项目根目录,你就得到一份干净的配置,没有多数模板夹带的那些无用选项。
配置的生成方式
-
1
选择 target 和 module
tsc 输出的 JavaScript 版本(ES2015 到 ES2023,或 ESNext),以及模块系统(CommonJS、ES2015/ES2020/ES2022、ESNext、Node16、NodeNext)。
-
2
确定 moduleResolution 和 JSX
Vite/webpack 项目选 bundler,现代 Node 选 node16/nodenext,老旧环境选 node 或 classic。现代 React 把 jsx 设为 react-jsx,保持 none 则不写入该键。
-
3
切换各个开关
strict、esModuleInterop、skipLibCheck、resolveJsonModule、allowJs、declaration、sourceMap 和 forceConsistentCasingInFileNames,都是简单的复选框。
-
4
设置目录
outDir 和 rootDir 预填为 ./dist 和 ./src。include 与 exclude 固定为 src/**/* 加上 node_modules 和 dist。
-
5
复制生成的 tsconfig
JSON 预览实时更新;点击一下即可复制,放到项目根目录作为 tsconfig.json 即可。
这个生成器会写出的选项
| 选项 | 此处默认值 | 作用 |
|---|---|---|
target |
ES2022 |
输出代码的 JavaScript 版本。ES2022 对当前浏览器和 Node 都安全;只有面向老旧环境才需要更低的 target。 |
module |
ESNext |
输出的模块语法。Node ESM 项目用 NodeNext/Node16,老式 Node 用 CommonJS。 |
moduleResolution |
node |
决定 import 如何被定位。配合 Vite/webpack/esbuild 首选 bundler,现代 Node 用 node16/nodenext;node(node10)是历史行为。 |
jsx |
不写入 | 只有选定模式时才会写入。React 17+ 用 react-jsx,由打包器转换 JSX 时用 preserve。 |
strict |
true |
一次性开启整个 strict 检查家族。新项目请保持开启。 |
esModuleInterop |
true |
修复从 CommonJS 包做默认导入的问题。 |
skipLibCheck |
true |
跳过 .d.ts 文件的类型检查;编译明显更快,极少掩盖真实 bug。 |
forceConsistentCasingInFileNames |
true |
拒绝大小写与磁盘文件不一致的导入(从 macOS 迁到 Linux 时的经典翻车点)。 |
resolveJsonModule |
true |
允许 import data from "./data.json"。 |
allowJs |
false |
允许 .js 文件参与编译;迁移过程中很有用。 |
declaration |
false |
生成 .d.ts 文件;发布库时开启。 |
sourceMap |
false |
生成 .js.map 文件用于调试。 |
outDir / rootDir |
./dist / ./src |
编译产物的去向和源码所在位置。 |
baseUrl |
"." |
始终写入,这样你手动补充的 paths 块会从项目根目录解析。 |
默认输出,一字不差
所有控件保持原样,你得到的就是这份文件:
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "node",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"allowJs": false,
"declaration": false,
"sourceMap": false,
"outDir": "./dist",
"rootDir": "./src",
"baseUrl": "."
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"dist"
]
}
只要给 jsx 选了 none 以外的模式,compilerOptions 里就会追加一条 "jsx"。
严格模式究竟开启了什么
strict: true 是一个总开关,一次性启用整个 strict 家族,包括 noImplicitAny、strictNullChecks、strictFunctionTypes、strictBindCallApply、strictPropertyInitialization、noImplicitThis、useUnknownInCatchVariables 和 alwaysStrict。新项目应该全部开着起步:事后补严格性非常痛苦。
常见错误
- 给 Node ESM 项目设置
module: "CommonJS"。 如果你的package.json写着"type": "module",module和moduleResolution都应使用NodeNext。 - 把
tsc当打包器用。 它是编译器和类型检查器。构建交给 Vite/esbuild/SWC,类型检查用tsc --noEmit。 - 什么都编译。 没有
include列表时,TypeScript 会把看得见的每个.ts都收进来。生成的配置始终写入include: ["src/**/*"]并排除node_modules和dist,这点不用操心。 - 需要的比配置提供的更多。 这个生成器有意保持精简。
lib、paths、isolatedModules、noEmit之类的选项,等基础文件就位后手动加上即可。
常见问题
monorepo 和多包项目应该:用一个包含公共选项的基础文件,各包通过 “extends” 继承。单项目仓库则用一份像生成结果这样的 tsconfig.json 更简单。
TypeScript 5.0 为使用 Vite、webpack 或 esbuild 构建的项目引入。它还原了打包器实际解析 import 的方式,不带 node16/nodenext 那套 ESM 文件扩展名规则。由 Node 直接执行的代码,请选 node16 或 nodenext。
没有专门的控件。不过生成的文件总是把 baseUrl 设为 “.”,你可以紧挨着它粘贴一个 paths 块,例如 “@/*”: [“src/*”],它会从项目根目录解析。
通常不需要,这也是生成器不写它的原因:target 会隐式确定一套匹配的库类型。只有特殊情况才手动覆盖 lib,比如 Node 项目里要用 DOM API,或需要 WebWorker 类型。
无需注册,也不会保存任何内容。你的选择只用于渲染配置预览;在分步视图中它们还会随页面 URL 传递,方便收藏或分享一份配置。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
HTML到文本转换器
从标记中剔除所有HTML标签及元素,生成适用于电子邮件客户端、数据分析及索引处理的纯文本格式。
IBAN 验证工具
在本地检查 IBAN 的注册国家长度、国内结构和 MOD 97-10 校验位。不上传数据,也不表示账户真实存在。
证书解码器
粘贴一张 X.509 PEM 证书,并查看解码后的字段:主体、颁发者、序列号、签名算法、有效期及主体备用名称(SAN)。
此工具还提供其他语言版本
- เครื่องมือสร้างไฟล์ tsconfig.json [TH]
- Generador de tsconfig.json [ES]
- Generator tsconfig.json [PL]
- tsconfig.json ジェネレーター [JA]
- Gerador de tsconfig.json [PT]
- tsconfig.json-generator [SV]
- Bộ tạo tsconfig.json [VI]
- مولد ملف tsconfig.json [AR]
- Générateur de tsconfig.json [FR]
- tsconfig.json-Generator [DE]
- Generator tsconfig.json [ID]
- tsconfig.json 생성기 [KO]
- Tsconfig.json-generator [NL]
- tsconfig.json Üretici [TR]
- tsconfig.json Generator [EN]
- Generatore tsconfig.json [IT]
- Генератор tsconfig.json [RU]