【问题标题】:Shared tsconfig.json and relative paths共享 tsconfig.json 和相对路径
【发布时间】:2019-02-03 09:44:24
【问题描述】:

我的团队正在维护多个包,我们正在尝试创建一个共享的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 中。例如,它寻找的是./node_modules/my-build-config/src/index.ts,而不是./src/index.ts

有没有办法共享文件位置,这样它们就不会在 10 多个包中重复?可能类似于 Jest 对 rootDir 属性所做的事情。

【问题讨论】:

    标签: typescript node-modules tsconfig


    【解决方案1】:

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

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

    【讨论】:

    • 这使您回到提问者希望避免的完全相同的问题:如果共享的 tsconfig.json 文件包含相对路径,则这些将相对于 node_modules 位置,而不是项目,即需要解决的问题。这个答案本质上是问题的重新发布,而不是解决方案。
    【解决方案2】:

    如果您知道my-build-config 将始终安装在node_modules/my-build-config 相对于每个没有符号链接的项目,您可以将../../ 添加到每个受影响的路径。

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

    【讨论】:

    • 我试了一下,现在效果很好。谢谢你的想法!
    • 那个相对路径解决方案不好,因为node_modules结构有时不符合预期。
    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 2018-08-07
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多