Skip to content
Latchkey

SWC対Babel:CIにはどちらのJS/TSトランスパイラか?

SWCはBabelよりはるかに高速に動作するRust製トランスパイラです。Babelには成熟したプラグインとプリセットのエコシステムがあります。

Babelは長年使われているJavaScript/TypeScriptトランスパイラで、膨大なプラグインとプリセットのエコシステムを持ちます。SWC(Rust)は多くのBabelのユースケースに対するはるかに高速なドロップインで、Next.jsや多くのtest runnerの変換を動かしています。

BabelSWC
実装JavaScriptRust
速度遅いはるかに高速
プラグインエコシステム巨大で成熟小さいが成長中
プリセット / 設定広範一般的なニーズをカバー
使用元多くのレガシー/カスタム構成Next.js、Vitest、その他

CIにおいて

SWCはBabelに対してトランスパイル時間を大幅に削減し、buildとテストの変換を高速化します。大規模なコードベースではその差が劇的なことがよくあります。多くのフレームワークやtest runnerはすでに内部でSWCを使っています。Babelは、SWCに同等物がない特定のプラグインやカスタム変換に依存する場合には依然として必要です。よくある手は、速度のためにSWCに切り替え、必要なプラグインが要求する箇所だけBabelを残すことです。

移行の労力

BabelのプリセットやプラグインをSWCの設定にマッピングしましょう。ほとんどの一般的なケース(TypeScript、JSX、モダンJS)はカバーされています。SWCのプラグインモデルは異なるため、カスタムまたはニッチなBabelプラグインは検証しましょう。どちらの場合も変換をcacheすると役立ちます。

結論

はるかに高速なトランスパイルを望み、変換が主流のものなら:SWC。特定またはカスタムのBabelプラグインに依存しているなら:Babelを維持する(または両方を使う)。ニッチなプラグインが妨げにならない限り、SWCが速度の勝ちです。

関連ガイド