ts-jest が esbuild/swc をトランスフォーマーに使って高速化していた
Thursday, April 13, 2023 02:54:00 PM
昨年 @swc-node/jest を使ってテストを高速化する という記事を書きました。
その時点で ts-jest でのテストが遅くて、 @swc-node/jest
に切り替えていました。
その後 @swc-node/jest
もなんやかんやあって、たまに動かなくなったりして issue 投稿して直してもらったりいろいろあったのですが、最近 ts-jest の状況を見てみたら、こんな記述がありました。
Starting from v28.0.0, ts-jest will gradually opt in adoption of esbuild/swc more to improve the performance. To make the transition smoothly, we introduce legacy presets as a fallback when the new codes don’t work yet.
from https://kulshekhar.github.io/ts-jest/docs/getting-started/presets
なんと、高速化のために esbuild/swc を使うようになったって。まじかー
早速 ts-jest に変えてみた
@swc-node/jest
から ts-jest
に変更して、 jest.config.js
を preset
に変更。
テストを実行してみると、確かに速くなってる!
手元のプロジェクトだと、 ts-jest
にかかる時間は、 @swc-node/jest
+ tsc
の時間とほぼ一致していました。
ts-jest
ではコンパイルエラーも検知されるので、つまりそういうことでしょう。
また ts-jest で大丈夫!
ということで、 jest の実行に swc や esbuild を使うことや、tsconfig と違う設定を考慮したりとかなく、TypeScript のコードを jest でテストできるようになりました。
私たちのプロジェクトは、早速すべて ts-jest@29 に切り替えました。 もし問題がある場合は、 Preset にレガシーモードを指定すると esbuild や swc を使わないようにできるようですが、そもそも一度 swc に切り替えてテストできていれば、問題なく ts-jest に戻れるはずです。
今後は TypeScript + jest での開発環境に ts-jest のご利用をお勧めします。
Recent Articles
- tsyringe を TypeScript 5 で使う方法 2023/05/02
- LocalStack を使って aws-sdk の Integration Test を実行する 2023/04/19
- AWS SDK v3 のモジュールと利用方法 2023/04/18
- ts-jest が esbuild/swc をトランスフォーマーに使って高速化していた 2023/04/13
- aws-sdk v3 を使うライブラリを作ったときは、なるべく peerDependencies に設定しよう 2023/04/11
- aws-sdk v2 が 2023 年中にメンテナンスモードになる 2023/04/06
- Node.js v18 / aws-sdk v3 の Lambda アプリが突然動かなくなる 2023/04/05
- aws-sdk v3 でコンパイルエラーになる - その2 2023/04/04
- aws-sdk v3 で TS2345 が出てコンパイルエラーになる 2023/04/03
- aws-sdk-client-mock はどのように aws-sdk をモックしているのか? 2023/02/02