Skip to content
Latchkey

tsx vs ts-node (CI): TypeScriptをより速く実行する

ts-nodeはtscの完全なセマンティクスでTypeScriptを実行し、tsxはesbuildを使って型を除去し、type-checkせずに高速に実行します。

ts-nodeはTypeScriptコンパイラ経由でTypeScriptを実行し、型を意識した完全な実行をサポートします。tsxはesbuildを使ってTypeScriptを高速にトランスパイルして実行し、シームレスなESMサポートを備えますが、type-checkは行いません。

tsxts-node
エンジンesbuild(高速)tsc
Type checkingなし(除去のみ)任意(より遅い)
ESMサポートシームレス動作する(設定が必要)
起動速度非常に高速より遅い
最適な用途スクリプト/テストを速く実行型を意識した実行

CIでは

tsxは起動が速く、わずかな設定でESMを扱えるため、CIでスクリプト、tooling、テストを速く実行するのに理想的です。ts-nodeは実行しながらtype-checkできますが、それは遅いため、ほとんどのpipelineは代わりにtsxのような高速runnerと、型安全のための別途のtsc --noEmitステップを実行します。TypeScriptを速く実行するだけでよいなら、tsxがより軽量な選択です。

type-checkを分離する

高速実行が型安全をスキップしないよう、tsc --noEmitを独自のステップ(並列)として実行します。どちらもmanaged runnerで動作し、高速なmanaged runnerは大きなコードベースでの長いtype-checkパスを短縮します。

結論

TypeScriptのスクリプトとテストを最速で実行したいなら: tsxを、別途のtsc --noEmitチェックと組み合わせる。型を意識した実行を1つのツールで必要とするなら: ts-node。ほとんどのpipelineは高速実行とtype-checkingを分けます。

関連ガイド