在打字稿节点项目中使用 monorepo 样式测试目录时,ts-jest 找不到类型信息
ts-jest cannot find type information when using monorepo style tests directory in a typescript node project
我使用 references
和 composite
设置将 jest 的测试类型和项目的类型分开。但是 ts-jest 无法在测试文件中找到类型信息并抛出多个错误,例如:error TS2304: Cannot find name 'expect'
.
这是目录结构:
.
├── package.json
├── src
│ └── index.ts
├── tests
│ ├── index.test.ts
│ └── tsconfig.json
├── tsconfig.json
tsconfig.json
:
{
"compilerOptions": {
"composite": true,
},
"include": ["src"]
}
tests/tsconfig.json
:
{
"extends": "../tsconfig.json",
"references": [
{
"name": "my-lib",
"path": ".."
}
],
"compilerOptions": {
"types": ["jest"],
"rootDir": "..",
"noEmit": true
},
"include": ["."]
}
package.json
:
{
"jest": {
"preset": "ts-jest",
"environment": "node"
}
}
如何在这样的项目中集成ts-jest?
更新 jest 配置以准确定义 ts-jest
的 tsconfig 文件:
package.json
{
"jest": {
"preset": "ts-jest",
"environment": "node",
"globals": {
"ts-jest": {
"tsconfig": "./tests/tsconfig.json"
}
}
}
}
我使用 references
和 composite
设置将 jest 的测试类型和项目的类型分开。但是 ts-jest 无法在测试文件中找到类型信息并抛出多个错误,例如:error TS2304: Cannot find name 'expect'
.
这是目录结构:
.
├── package.json
├── src
│ └── index.ts
├── tests
│ ├── index.test.ts
│ └── tsconfig.json
├── tsconfig.json
tsconfig.json
:
{
"compilerOptions": {
"composite": true,
},
"include": ["src"]
}
tests/tsconfig.json
:
{
"extends": "../tsconfig.json",
"references": [
{
"name": "my-lib",
"path": ".."
}
],
"compilerOptions": {
"types": ["jest"],
"rootDir": "..",
"noEmit": true
},
"include": ["."]
}
package.json
:
{
"jest": {
"preset": "ts-jest",
"environment": "node"
}
}
如何在这样的项目中集成ts-jest?
更新 jest 配置以准确定义 ts-jest
的 tsconfig 文件:
package.json
{
"jest": {
"preset": "ts-jest",
"environment": "node",
"globals": {
"ts-jest": {
"tsconfig": "./tests/tsconfig.json"
}
}
}
}