在 tsconfig.json 排除字段中添加测试文件是一种好的做法吗?

Is it a good practices to add tests files in the tsconfig.json exclude field?

我经常在项目tsconfig文件中看到"exclude": ["**/*.test.ts", "**/*.test.tsx"]

有时有一个 tsconfig.json 没有这个,但是另一个 tsconfig.build.json 覆盖这个文件并添加这个排除。

我的问题是:

这样做的利弊是什么?

  • 优点
    • 测试不会编译为 JavaScript
    • 更小的构建尺寸
    • 编译时间更短
  • 缺点
    • 为了 运行 测试,您需要安装 TypeScript
    • (以及一些开箱即用的支持 TypeScript 的测试库)

这被认为是一种好的做法吗?

取决于您的用例。较小的构建是好的,但成本是多少?您的模块是否需要每个人都进行测试,还是对构建进行一次测试就足够了?

此外,如果您的 devDependencies 中有类似 ts-jest 的内容,您的测试将 运行 作为纯 TypeScript,因此您不需要编译它们。

同意第一个答案。只是想发表评论(但还没有足够的声誉来发表评论)。

如果我们想从 tsconfig.json 中排除那些,并且无论如何都想将质量标准应用于代码,我们可以创建另一个文件,例如,tsconfig.eslint.json 并在那里扩展 tsconfig。然后将一个空数组传递给 exclude 对象。然后 link 这个文件供 eslint 配置使用。

tsconfig.eslint.json的例子:

{
  "extends": "./tsconfig",
  "exclude": []
}