共享 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 包发布。

例如看这个https://github.com/sindresorhus/tsconfig