如何使用 `tsconfig.js` 文件代替 `tsconfig.json`

问题描述 投票:0回答:1

我有多个包含多个

tsconfig.json
文件(和其他配置文件)的项目,我的目标是在每个项目中使用相同的文件。

为了实现这一目标,我决定创建一个 npm 包

config
,其中包含一个标准的
tsconfig.json
文件(以及其他
.json
配置文件)。

为了构建我的项目,我之前的打字稿命令是

tsc -p tsconfig.json --incremental
,我试图将其更改为
tsc -p tsconfig.js --incremental
,并使用如下
tsconfig.js
文件:

module.exports = {
  ...require('./node_modules/@myOrg/myPackage/tsconfig.json')
};

如果需要,我可以使用 spread 覆盖一些属性。

我的想法似乎是合法的,但它行不通,它没有使用 tsc 和这个配置文件进行编译,因为它省略了每个 tsconfig.json 的属性(例如

esModuleInterop
downlevelIteration
es2015
等。 ..) 这显然在包装的
tsconfig.json
.

我怎样才能实现我的目标?可能这项技术适用于除

.json
之外的所有其他
tsconfig.json
配置文件,因为需要它的一些标志才能使其成为可能

typescript tsconfig
1个回答
3
投票

明确不支持可执行配置模块:

我们不接受将配置变成可执行文件的 PR。这打开了一个巨大的蠕虫罐头(运行它安全吗?配置文件有什么依赖关系?配置文件对其环境有什么假设?)我们希望保持关闭。

GitHub:允许 javascript(或打字稿)配置文件(#30400)

备选方案:

你还没有说 为什么 你要集中你的 tsconfig。如果只是为了方便,那么您可以使用

extends
选项从另一个 tsconfig 文件继承配置选项。

注意“在配置文件中找到的所有相对路径都将相对于它们起源的配置文件进行解析。”因此,遵循这种方法可能会阻止您继承all属性。您可能需要在本地配置文件中提供至少几个选项(例如

files
)。

如果你真的想批量复制你的 tsconfig(包括相对文件路径),那么你可以在运行之前使用构建工具(如 gulp)将 tsconfig.json 从一个众所周知的位置复制到你的项目根目录

tsc
。我相信您可以想象这会带来的一些问题,包括要求开发人员在将项目加载到 VS Code 等编辑器之前执行额外的 CLI 步骤。

温馨提示:

基本配置对于构建标准化非常有用,但从长远来看,您可能会导致比解决的问题更多的问题。取得平衡很重要。从外部继承 太多 会使您的项目僵化,使其难以适应环境变化或新技术。您可能会发现自己需要为一个项目调整基本配置,但这些调整可能与另一个项目不兼容。或者您可能会发现自己不断地覆盖基本配置中的相同属性,因为您的首选项发生了变化,但旧项目仍然依赖于那些旧选项。您可能会通过版本控制或标记来解决这个问题,但是您获得了什么?您仍然拥有多个配置,只是更难找到和使用它们。有充分的理由让您的项目配置与您的项目保持一致。

从通用配置继承不一定都是坏事,但在我看来,过度依赖继承会导致长期问题,比从模板复制 tsconfig 更难解决。

© www.soinside.com 2019 - 2024. All rights reserved.