@swc/jest
为了使你的 Jest 测试运行得更快,你可以将默认的基于 JavaScript 的运行器(ts-jest
)替换为使用 SWC 的 drop-in Rust 替换 (opens in a new tab)。
安装
pnpm i -D jest @swc/core @swc/jest
使用
在 jest.config.js
中,配置 Jest 使用 SWC:
jest.config.js
module.exports = {
transform: {
'^.+\\.(t|j)sx?$': '@swc/jest',
},
}
它将默认从 .swcrc
加载 SWC 配置。你也可以自定义它:
jest.config.js
const fs = require('fs')
const config = JSON.parse(fs.readFileSync(`${__dirname}/.swcrc`, 'utf-8'))
module.exports = {
transform: {
'^.+\\.(t|j)sx?$': ['@swc/jest', { ...config, /* custom configuration in Jest */ }],
},
}
Q & A
Q: Jest 使用 CommonJS 作为默认值。但我想要使用 ESM
A: 按照此 指南 (opens in a new tab) 设置 Jest。
对于 JavaScript,编辑 package.json
如下:
package.json
{
// ...
"type": "module"
}
对于 TypeScript,编辑 jest.config.js
如下:
jest.config.js
module.exports = {
// ...
extensionsToTreatAsEsm: ['.ts', '.tsx'],
}
使用 --experimental-vm-modules
运行测试:
cross-env NODE_OPTIONS=--experimental-vm-modules jest
# or
node --experimental-vm-modules ./node_modules/jest/bin/jest.js
Q: jsc.target
设置的 ECMAScript 目标是什么?
A: 默认情况下,是你的 Node 运行时支持的版本。
Node 版本 | 默认 jsc.target |
---|---|
12 | 'es2018' |
13 | 'es2019' |
14 | 'es2020' |
15 | 'es2021' |
16 | 'es2021' |
17 | 'es2022' |
你可以通过在 jest.config.js
中设置一个明确的版本来自定义它:
jest.config.js
module.exports = {
transform: {
"^.+\\.(t|j)sx?$": [
"@swc/jest",
{
jsc: {
target: "es2021",
},
},
],
},
}