typescript 编译慢主因是配置不当,优化 tsconfig.json 可提速 2–5 倍:1. 开启 incremental 并指定 tsbuildinfofile;2. 启用 skiplibcheck 跳过第三方类型检查;3. 明确 include/exclude 控制文件范围;4. 大型项目使用 project references。

TypeScript 编译慢,多数不是代码本身的问题,而是配置没对。优化 tsconfig.json 不需要改业务逻辑,几项关键开关就能让编译提速 2–5 倍,尤其在大型项目或 Monorepo 中效果明显。
开启增量编译(必开)
TS 5.x+ 默认支持增量编译,但需手动启用。它会把上一次编译的依赖图和文件哈希存到 .tsbuildinfo,下次只检查改动过的文件和受其影响的部分。
- 在
compilerOptions中添加:"incremental": true - 建议指定缓存路径,避免误提交或污染:
"tsBuildInfoFile": "./.tsbuildinfo" - 首次编译略慢(生成缓存),后续启动和重编译显著加快
跳过类型库检查(强烈推荐)
node_modules/@types 下成百上千个 .d.ts 文件,每次编译都全量检查,耗时占比常超 40%。这些定义基本稳定,首次通过后无需反复校验。
- 启用:
"skipLibCheck": true - 注意:不影响你项目内代码的类型检查,只跳过第三方类型声明
- 2026 年起,几乎所有中大型项目都默认开启此项
合理控制文件范围(减少扫描)
tsc 默认扫描整个项目目录,包括测试、文档、配置等无关文件。明确 include 和 exclude 能大幅缩短解析阶段时间。
- 只编译源码:
"include": ["src/**/*"] - 排除干扰项:
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts", "scripts"] - 避免使用空
include或仅靠files列表(易遗漏、难维护)
大型项目用 Project References(进阶)
当单个项目超过 10 万行或含多个功能域(如 packages/core、packages/ui),建议拆分为子项目。每个子项目独立编译、缓存、生成声明文件,修改 A 模块不会触发 B 模块重编译。
- 子项目 tsconfig.json 中加:
"composite": true - 根项目 tsconfig.json 中声明依赖:
"references": [{"path": "./packages/core"}, {"path": "./packages/ui"}] - 用
tsc --build替代tsc启动构建流程 - 自动启用
declaration和增量机制,无需额外配置











