共享 tsconfig.json 和相对路径
Shared tsconfig.json and relative paths
我的团队正在维护多个包,我们正在尝试创建一个共享 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"
}
这里的问题是共享配置中的所有路径都是相对于文件位置的。例如。它将尝试包含不是来自当前项目但在 my-build-config
中的“.ts”文件。例如,它查找 ./node_modules/my-build-config/src/index.ts
.
而不是 ./src/index.ts
有没有办法共享文件位置,这样它们就不会在 10+ 个包中重复?也许类似于 Jest 对 rootDir
属性.
所做的事情
如果您知道 my-build-config
将始终安装在 node_modules/my-build-config
相对于每个没有符号链接的项目,您可以将 ../../
添加到每个受影响的路径。
或者,使用其他工具将您的 tsconfig.json
复制到所有项目中,例如 Braid(披露:我是 Braid 贡献者)。
另一种选择是将您的 tsconfig.json
作为 npm 包发布。
我的团队正在维护多个包,我们正在尝试创建一个共享 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"
}
这里的问题是共享配置中的所有路径都是相对于文件位置的。例如。它将尝试包含不是来自当前项目但在 my-build-config
中的“.ts”文件。例如,它查找 ./node_modules/my-build-config/src/index.ts
.
./src/index.ts
有没有办法共享文件位置,这样它们就不会在 10+ 个包中重复?也许类似于 Jest 对 rootDir
属性.
如果您知道 my-build-config
将始终安装在 node_modules/my-build-config
相对于每个没有符号链接的项目,您可以将 ../../
添加到每个受影响的路径。
或者,使用其他工具将您的 tsconfig.json
复制到所有项目中,例如 Braid(披露:我是 Braid 贡献者)。
另一种选择是将您的 tsconfig.json
作为 npm 包发布。