跳到內容
文件
用法
@swc/jest

@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",
                },
            },
        ],
    },
}