在打字稿节点项目中使用 monorepo 样式测试目录时,ts-jest 找不到类型信息

ts-jest cannot find type information when using monorepo style tests directory in a typescript node project

我使用 referencescomposite 设置将 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"
      }
    }
  }
}