如何仅针对构建排除打字稿中的特定文件?

thi*_*ilg 11 javascript typescript tsconfig jestjs

是否可以仅针对构建排除所有测试文件,但将它们与 nodemon 一起使用以在本地运行测试?当我在tsconfig.json文件中排除测试文件时,我收到一个打字稿错误,在我的情况下,它找不到像 jest 这样的测试库的类型。

Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.ts(2582)

{
  "compilerOptions": {},
  "exclude": [
    "**/*.test.ts"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想知道,因为我猜临时转译被放入另一个文件夹而不是构建文件夹。

thi*_*ilg 27

一种可能的解决方案是使用两个不同的 tsconfig 文件,一个用于测试,另一个用于生产构建。

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es6",
    "outDir": "./build",
    "baseUrl": ".",
    "paths": {
      "*": ["types/*"]
    },
    "strict": true,
  }
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.prod.json

{
  "extends": "./tsconfig",
  "exclude": ["**/*.test.ts", "**/*.mock.ts"]
}
Run Code Online (Sandbox Code Playgroud)

  • 并使用新配置`tsc -p tsconfig.prod.json` (3认同)