コンテンツへスキップ
ドキュメント
使用方法
@swc/jest

@swc/jest

Jestテストの実行速度を向上させるために、デフォルトのJavaScriptベースのランナー(`ts-jest)を、SWCを使用したドロップイン型のRustによる代替手段(新しいタブで開きます)に置き換えることができます。

インストール

pnpm i -D jest @swc/core @swc/jest

使用方法

`jest.config.js`内で、SWCを使用するようにJestを設定します。

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: このガイド(新しいタブで開きます)に従って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.jsランタイムでサポートされているバージョンです。

Node.jsバージョンデフォルトの`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",
                },
            },
        ],
    },
}