ブラウザでの画面表示と印刷の描画差異に関する実践的考察
フロントエンドのビルドツールを選定する際、どのツールが最も効率的か、悩んだ経験がある方も多いと思います。私もその一人で、今回はWebpackからViteへ移行し、最適な開発環境を探した試行錯誤についてまとめてみます。
Webpackからのスタート
最初に使用していたビルドツールは、言わずと知れたWebpackです。Webpackはフレキシブルで強力だったのですが、どうも開発が止まっているような感じがして、このまま使い続けて大丈夫かという不安を感じるようになりました。Javascriptのこの辺のツールの流行り廃りは常に意識しておかないと、気がついたら時代遅れということになってしまいますからね。
Viteへの移行
そこで次に試したのがViteでした。Viteはesbuild
を内部で使用しているため、開発サーバーの起動が驚くほど高速です。Viteの開発サーバーを使えば、 モジュールのホットリロード(HMR) が自動的に有効になるので、瞬時に変更が反映される感覚は非常に爽快でした。
しかし、私にとっては開発サーバー自体は不要で、単にビルドのスピードとファイルの変更を監視するウォッチモードさえあれば十分という私の(ここの)開発スタイルには、Viteのホットリロードは必須ではありませんでした。うまく機能させようと思うといろんなところに手を入れる必要があります。
Rollupを試す
次に検討したのが、Viteの基盤でもあるRollupを直接使用する方法です。Rollupはプラグインシステムが充実しており、Webpackに匹敵する拡張性を持っています。また、Rollupでもウォッチモードが使えるため、一度はこの構成に落ち着こうと考えました。
しかし、Rollupのウォッチモードは、私が期待していたほど速くはなく、Webpackのようにサクサクとしたフィーリングではありませんでした。特に開発中の再ビルドにおいて、少しストレスを感じる結果に。
Rollup + esbuild:一時的な解決策
Rollup自体にesbuild
を組み合わせることでビルドを高速化するというアイデアも試しました。esbuild
はJavaScriptとTypeScriptのトランスパイルを高速に処理できるため、期待通りのビルドスピード向上が見られました。
しかし、Rollupにesbuild
を組み込む際に発生した依存関係のエラーや、特定のライブラリの処理に手間がかかり、最終的に設定の煩雑さから、この構成も見送りました。設定の簡潔さと開発フィーリングのバランスが崩れてしまったのです。
最終結論:Viteでのウォッチモードがベスト
最終的にたどり着いたのは、Viteでウォッチモードだけを利用するというアプローチです。
Viteはvite build --watch
コマンドでファイルの変更を監視しながら、即座にビルドを反映してくれます。この方法なら、Viteの高速なビルドを活用しつつ、必要な開発サーバー機能を省略できます。
これだとWebpackのワッチモードと同じ感覚で開発でき、なおかつビルド速度が圧倒的に速いViteのウォッチモードが、私にあった開発体験を提供してくれることも分かりました。
まとめ
- Viteの開発サーバーは高速で優れているが、開発サーバーなしでもViteのウォッチモードが使えれば十分。
- Rollupは設定の柔軟性が高いものの、ウォッチモードの速度に難あり。
- esbuildを組み合わせたRollupも試行したが、設定が煩雑に。
- 結論:Viteのウォッチモードを使うのは設定が簡単、最新の開発環境が得られる。
もし、Webpackからの移行を考えているのであれば、Viteのウォッチモードを活用するアプローチが良いかもしれません。