Skip to content
Latchkey

esbuild とは?超高速の JavaScript バンドラー

esbuild は Go で書かれた JavaScript および TypeScript のバンドラー兼トランスパイラーで、従来のツールより 1 桁から 2 桁速くバンドルを生成します。

esbuild は「バンドラーを待つ」という感覚を過去のものにしました。パイプライン全体を Go で書き、積極的に並列化することで、JavaScript ベースのツールよりも大幅に速く JavaScript と TypeScript をバンドル・トランスパイルし、今では多くの他のビルドツールの dev ステップを支えています。

esbuild とは何か

esbuild は JavaScript と TypeScript 向けのバンドラー、ミニファイア、トランスパイラーです。entry point を受け取り、import を解決し、モダンな構文を変換し、tree-shaking を行い、ミニファイされた bundle を出力できます。これらすべてを高速な単一パスで行います。JSX と TypeScript の構文を out of the box でサポートします(型チェックなし)。

なぜ速いのか

esbuild は Go で書かれてネイティブコードにコンパイルされており、JavaScript の起動および JIT のオーバーヘッドを回避します。ファイルの parse、print、処理を CPU コア間で並列に行い、メモリ効率の高いデータ構造を使用します。その結果、比較対象となる JavaScript ベースのバンドラーよりも多くの場合 10 倍から 100 倍速い build になります。

使用例

単一のコマンドで bundle とミニファイを行います。

An esbuild CLI invocation
# bundle and minify an entry point
esbuild src/index.ts --bundle --minify --outfile=dist/app.js

CI/CD での役割

CI では、esbuild は本番用のバンドラーにも、Vite のようなツール内部の高速な変換レイヤーにもなり得ます。その速度は build ステップを短縮し、これは bundling が pipeline の時間を支配する大規模なコードベースで最も重要です。esbuild は型チェックを行わないため、pipeline は通常、型エラーを検出するために別の "tsc --noEmit" ステップと組み合わせます。

代替手段

Webpack はより設定の自由度が高いですが、はるかに遅いです。Rollup はライブラリ向けにクリーンな bundle を生成し、Vite が本番で使用しているものです。SWC は Rust ベースの同等のトランスフォーマーです。esbuild は build の生の速度が優先されるときに選ばれ、多くの他のツールの高速パスを支えています。

重要なポイント

  • esbuild は非常に高速な Go ベースのバンドラー兼トランスパイラーです。
  • 型チェックなしで TypeScript と JSX を変換します。
  • 型エラーを検出するため、CI では別の "tsc --noEmit" ステップと組み合わせてください。

関連ガイド