Madogiwa Blog

主に技術系の学習メモに使っていきます。

`@swc/jest`でjestによるTypeScriptのテストを高速化するMEMO📝

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.

参考

t-yng.jp