JestでTypeScriptのテストを行う際にはts-jest
を利用することが多いと思うのですが、@swc/jest
を利用するとテストを高速化できるとのことで個人のWebサービスで試してみたのでメモ📝
前提事項
jest
: 29.0.3@swc/jest
: 0.2.22
@swc/jestとは
SWC (stands for Speedy Web Compiler) is a super-fast TypeScript / JavaScript compiler written in Rust.
https://github.com/swc-project/swc@swc/jest
To make your Jest tests run faster, you can swap out the default JavaScript-based runner (ts-jest) for a drop-in Rust replacement using SWC.
https://swc.rs/docs/usage/jest
SWCとはRustで再実装されたTypeScriptのコンパイラで、それを使ってts-jestを置き換えたのが@swc/jest
ということですね!
@swc/jestのinstall
インストールは簡単で以下のコマンドでinstallし、
# if you use npm npm i -D jest @swc/core @swc/jest # if you use yarn yarn add -D jest @swc/core @swc/jest
以下のようにts-jest
を@swc/jest
に差し替えてあげれば大丈夫です!
-- "^.+\\.ts$": "ts-jest", ++ "^.+\\.ts$": "@swc/jest",
以下のように必要に応じて任意の設定を作って渡すこともできます。
const swcConfig = { module: { type: "commonjs", }, };
-- "^.+\\.ts$": "ts-jest", ++ "^.+\\.ts$": ["@swc/jest", swcConfig],
どれくらい早くなるか
個人のプロジェクトなのでそんなにテストコードの数が無くアレですが、半分ぐらいの実行速度になったので結構早くなってそうです🚅✨
// swc/jest ✨ Done in 2.36s. ✨ Done in 1.56s. ✨ Done in 1.78s. ✨ Done in 1.80s. ✨ Done in 1.81s. // ts-jest ✨ Done in 2.66s. ✨ Done in 3.38s. ✨ Done in 3.24s. ✨ Done in 3.41s. ✨ Done in 3.19s.