@swc/jest
若要讓 Jest 測試執行得更快,您可以將預設的 JavaScript 執行器 (ts-jest
) 換成使用 SWC 的 Rust 取代方案(在新分頁中開啟)。
安裝
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 */ }],
},
}
問與答
問:Jest 預設使用 CommonJS。但我想要使用 ESM
答:依循 這份指南(在新分頁中開啟) 設定 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
問: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",
},
},
],
},
}