如何将 TypeScript tsconfig 放在另一个位置

How to put TypeScript tsconfig in another location

我正在尝试创建一个存储库,在我们本地托管的 github 实例中包含我们公司的通用 linting 规则。这样我们就有了一套可以轻松分享的共同规则。还有我们的打字稿定义和 PrettierJs 规则的配置。

文件结构如下:

/lint-common
  /config
    .eslintrc.js
    .pretterrc
    tsconfig.json
  package.json 

在另一个项目中安装时,它看起来像这样:

/node_modules
  /lint-common
    /config
      .eslintrc.js
      .pretterrc
      tsconfig.json
    package.json 
package.json <-- Consuming package for the project that lint-common has been installed into

从我安装了 lint-common 的消费项目中,我在 package.json 中有如下脚本:

"scripts": {
  "lint": "eslint -c /node_modules/lint-common/config/.eslintrc.js --ext .js src",
  "pretty": "prettier --write --config /node_modules/lint-common/config/.prettierrc src/**/*.js"
}

到目前为止一切正常。但是当我尝试为 TypeScript 执行此操作时,它的行为却大不相同。 lintpretty 从我指定的 src 目录处理,tsconfig 坚持从它自己的位置处理文件。

对于 TypeScript,我尝试添加这样的脚本:

"tsc": "tsc --p ../../config/tsconfig.json",

--p--project 选项 - 它允许我指定 tsconfig 文件的位置。在 tsconfig 我有:

"include": ["src/**/*]

但是,我只收到以下错误:

No inputs were found in config file ...

我可以通过将其更改为来解决此问题:

"include": ["../../../src/**/*]

tsconfig 中的 include 选项正在搜索与 tsconfig 位置相关的文件 - 而不是我 运行 来自 npm 命令的位置。

有什么办法可以解决这个问题吗?我试过使用 rootDir 选项,但似乎没有任何效果。

Is there a way I can get around this?

文档没有提到方法,据我所知,也没有。

我认为一个可行的解决方案是在新项目的顶层包含一个 npm [post-install] 脚本,它创建一个 tsconfig.json 文件,它利用 extends 属性 引用嵌套在 node_modules.

中的配置