我的团队正在维护多个软件包,我们正在尝试为所有软件包创建具有共同配置的共享tsconfig.json
。它包含了我们关于编译目标,JSX,输出目录和包含文件的首选项,例如:
{
"compilerOptions": {
"module": "esnext",
"target": "es5",
"lib": ["es5", "dom"],
"jsx": "react",
"outDir": "build/dist"
},
"include": ["./src/**/*.ts", "./src/**/*.tsx"]
}
我们将此文件作为共享的npm模块发布,例如my-build-config
,然后在每个项目中使用extends
:
{
"extends": "./node_modules/my-build-config/tsconfig.json"
}
这里的问题是共享配置中的所有路径都相对于文件位置。例如。它将尝试不包含当前项目中的“ .ts”文件,而是将其包含在my-build-config
中。例如,它将查找./src/index.ts
而不是./node_modules/my-build-config/src/index.ts
。
是否可以共享文件位置,因此不会在10个以上的软件包中重复出现?也许类似于Jest对rootDir
属性所做的事情。
答案 0 :(得分:0)
如果您知道my-build-config
总是相对于每个项目都安装在node_modules/my-build-config
上,而没有符号链接,则可以在每个受影响的路径前面加上../../
。
或者,使用其他工具将tsconfig.json
复制到所有项目中,例如Braid(披露:我是Braid贡献者)。
答案 1 :(得分:0)
另一种选择是将您的tsconfig.json
发布为npm软件包。