共享的tsconfig.json和相对路径

时间:2018-08-28 17:16:59

标签: typescript node-modules tsconfig

我的团队正在维护多个软件包,我们正在尝试为所有软件包创建具有共同配置的共享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属性所做的事情。

2 个答案:

答案 0 :(得分:0)

如果您知道my-build-config总是相对于每个项目都安装在node_modules/my-build-config上,而没有符号链接,则可以在每个受影响的路径前面加上../../

或者,使用其他工具将tsconfig.json复制到所有项目中,例如Braid(披露:我是Braid贡献者)。

答案 1 :(得分:0)

另一种选择是将您的tsconfig.json发布为npm软件包。

例如https://github.com/sindresorhus/tsconfig