Monorepo里怎么让不同包共享TypeScript配置?
我用pnpm workspace搭了个Monorepo,里面有几个React组件包和一个工具函数包。现在每个包都复制了一份tsconfig.json,改起来太麻烦了,想抽成一份共享的配置。
试过在根目录建tsconfig.base.json然后在子包里用"extends": "../../tsconfig.base.json",但VS Code老报路径解析错误,类型检查也不生效。是不是还得配paths或者references?求个靠谱方案!
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "node",
"strict": true,
"declaration": true,
"outDir": "./dist",
"jsx": "react-jsx"
}
}
extends路径看起来没问题,但有时候 VS Code 的缓存或者项目加载顺序可能会导致问题。可以先尝试重启 VS Code 或者清理缓存。其次,确保根目录的
tsconfig.base.json文件格式正确,并且没有语法错误。你的基础配置看起来是好的,但是要记得在根目录下的tsconfig.json中包含对所有子项目的引用,这样 TypeScript 编译器才知道哪些文件需要处理。可以在根目录下创建一个
tsconfig.json文件,内容如下:然后,在每个子包的
tsconfig.json中,继续使用extends来继承基础配置:这里的
include字段告诉 TypeScript 哪些文件需要被包含在当前项目的编译范围内。确保src目录是每个子包的实际源码目录。最后,别忘了做校验。在命令行中运行
tsc --build --verbose来检查是否有任何错误信息,这有助于定位问题。希望这些步骤能帮到你,如果问题依然存在,可能是 VS Code 的某些扩展或者设置导致的,可以尝试禁用一些扩展看看是否有所改善。