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