ビルドツールざっくり調べた 続き
昨日ざっくりビルドツールを調べて書いたらodanさんがリプライをくれた。
パッケージの粒度的には esbuild/swc/rollup が同レベルのツールです。esbuild/swc は rollup より新しめのツールでそれぞれ go/rust で実装されていて速度を売りにしています
— odan (@odan3240) May 16, 2022
vite は esbuild と rollup をいい感じに使えるようにする君です(vite の package.json を見ると依存にこれら2つがある)
なんて分かりやすいんだろう。
昨日調べたときはRollupがプロダクションビルドで使われていることが多そうだったので、esbuildやswcよりも大きめな粒度のツールなのかな?と勝手に思っていた。
そしてViteも感覚としてはRollupと近くて、開発環境でNo BundleにやってくれてプロダクションビルドでRollup使っているという認識だった。
けどそれはちょっと違っていて、ViteはあくまでesbuildとRollupを内部で使いつつ、開発環境でNo Bundleな開発サーバーとして利用できるみたいな感じということらしい。
esbuildで課題だった変更監視ができない問題も、Viteを使うことでHMRが使えるので解決する。
ViteはVue以外で使えないわけでもないので(ReactとPreactのビルドのサポートもしているとのこと)、Vue/ReactでWebアプリケーションを作るとしたらViteを選択肢に入れるのはよさそう。
HMR に関してはそうです
— odan (@odan3240) May 16, 2022
prod build が Rollup な理由はちゃんとは知らないです。多分 vite のリリース当初は esbuild がリリースされて間もない頃で実績や plugin が豊富な Rollup を選んだのかなとは思います
ググって調べている段階で若干思っていたので気づけよという話なのだが、Rollupがプロダクションビルドで使われている理由の推測もodanさんがしてくれた。
実際そのとおりだと思う。esbuildやswcがだいたい2〜3年前くらいに出てきたのに比べて、Rollupは7年前からnpmにある。それだけの差があれば使われて枯れていくはずだし、安定感も増すよね。
自分の調査の甘さを感じました。