如何为Monorepo中的多个TypeScript项目配置通用tsconfig?
解决方案
方案1:通过继承根配置实现统一管理(推荐)
这种方式既保留每个项目的独立编译能力,又能复用通用的TypeScript规则,完美适配你的Monorepo结构。
- 根目录创建
tsconfig.base.json,存放所有通用配置:
{ "compilerOptions": { "strict": true, "declaration": true // 路径相关配置(outDir、declarationDir、include)交给子项目单独设置 } }
- 删除每个子项目下原有的
tsconfig.json,替换为以下内容(以packages/foo/tsconfig.json为例):
{ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "./dist", "declarationDir": "./types" }, "include": ["./src"] }
每个子项目仅需指定相对自身目录的路径,同时继承根配置的通用编译规则。
方案2:单个根tsconfig管理所有项目
如果希望用一个配置文件一次性编译所有子项目,可以通过通配符和路径映射实现:
根目录创建tsconfig.json:
{ "compilerOptions": { "strict": true, "declaration": true, "rootDir": "./", "outDir": "./", "declarationDir": "./" }, "include": [ "packages/*/src/**/*" ], "exclude": [ "packages/*/dist", "packages/*/types" ] }
include用通配符匹配所有子项目的src目录rootDir设为根目录,确保TypeScript根据文件相对路径,将编译产物输出到对应子项目的dist/types目录- 在根目录执行
tsc即可一次性处理所有项目
为什么你的$PWD尝试失败?
TypeScript不识别Shell环境变量(如$PWD),配置中的路径只能使用相对路径或硬编码的绝对路径,硬编码绝对路径会导致配置无法在不同环境复用,因此不推荐。
内容的提问来源于stack exchange,提问作者nicfv
相关产品推荐
相关产品推荐

