WebpackからViteへ。React静的サイトで実感した開発速度の違い

これまでフロントエンドのビルドにはWebpackを使うことが多く、設定や運用にも慣れていました。
ただ、今回Webで遊べるReactアプリとして作るにあたり、初めてViteを使ってみました。
結論から言うと、特に詰まることなく最後まで作り切れた
この「詰まらなかった」という体験自体が、Viteを評価する一番の理由でした。
本記事では、実際に使って感じたWebpackとの違いをまとめます。
デプロイ先は エックスサーバー(Xserver)での静的ファイル配置 です。


プロジェクトの要件

今回の制作物は以下の要件でした:

  • CMSを使わず、静的ファイルとして配信
  • ReactでUIを構築
  • コンテンツはJSONデータと画像が中心
  • エックスサーバーに配置予定

環境構築に時間をかけたくなかったため、Viteを採用しました。


体感で一番違ったのは「待ち時間」

Webpackと比べて、まず感じたのは以下です。

  • 開発サーバーの起動が速い
  • ファイル変更後の反映が速い(HMR:Hot Module Replacement)
  • 以下の設定が不要
    • Babel設定
    • ローダーの設定
    • JSX変換の設定

開発中に発生する「待ち」が減ると、思考が途切れにくくなります。
個人制作では、この差がそのまま作業効率に影響します。


WebpackとViteの仕組みの違い(ざっくり)

細かい内部構造は省きますが、押さえておくと安心な違いは以下です。

  • Webpack
    すべてをバンドルしてから動かす設計。開発環境でもその影響を受けやすい。

  • Vite
    開発時はネイティブESM(ES Modules)を活用し、ブラウザが必要なモジュールを直接読み込む。
    本番ビルド時はRollupでバンドル・最適化を行う。

そのため、Viteは開発中の体感速度が軽いと感じやすいです。


今回使った環境

{
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  },
  "devDependencies": {
    "vite": "^5.0.0",
    "@vitejs/plugin-react": "^4.2.0"
  }
}

今回使った vite.config.js

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  build: {
    outDir: 'dist',
    assetsDir: 'assets',
    emptyOutDir: true
  }
});

ビルドコマンド:

npm run build

この設定で困らなかった理由

Reactプラグイン

公式の @vitejs/plugin-react を入れるだけでJSX周りは問題なく動作。
Webpack時代のようなBabel設定は不要でした。

dist出力+エックスサーバー配信

dist に出力されたファイルを、そのままエックスサーバーの公開ディレクトリに配置するだけ。
特別なサーバー設定は不要です。

FTPクライアント(FileZillaなど)で dist/ の中身を /public_html/ にアップロードすれば完了します。

assetsDirを指定

生成されたJSやCSS、画像が assets/ にまとまるため、構造が分かりやすい。
FTPアップロード時も迷いません。

emptyOutDir

ビルド前に出力先を空にするため、古いファイルが残らない。
上書きアップロード前提のエックスサーバー運用と相性が良いです。


baseを指定していない理由

今回はドメイン直下での配信を想定していたためbase は指定していません。
サブディレクトリ配信の場合は、

base: '/app/'

を追加すれば対応可能です。


Webpackの方が向いているケースもある

  • 既存案件でWebpack前提の構成がある
  • 独自ローダーやプラグイン資産が多い
  • ビルド要件が複雑

こうした場合は、無理にViteへ移行する必要はないと思います。


まとめ

  • 小〜中規模のReact静的サイトなら、Viteは非常に快適
  • エックスサーバー配信でも「distを置くだけ」で成立する
  • 設定で悩む時間が少ないのは、個人制作では大きなメリット

今回の構成では、今後もViteを第一候補にするつもりです。