📦

Asset Pipeline & Vite

JavaScript、CSS、画像等のフロントエンドアセット管理

Railsのフロントエンドアセット管理は何度も進化しました。

Sprockets(Asset Pipeline) — Rails 3.1〜

  • Rubyベースのアセットコンパイラ

  • JavaScript、CSS、画像を結合(concatenate) + 圧縮(minify)

  • ファイル名にハッシュ追加(フィンガープリンティング)でキャッシュ最適化

  • stylesheet_link_tagjavascript_include_tag

Webpacker — Rails 5.1〜6.1(廃止済み)

  • Webpackベース、Node.js必要

  • React/Vue等のモダンJSフレームワークをサポート

Vite — Rails 7+(現在推奨)

  • 高速開発サーバー(HMR — Hot Module Replacement)

  • モダンビルドツール(Rollup)

  • vite_javascript_tagvite_stylesheet_tag

Import Maps — Rails 7デフォルト

  • バンドラーなしでブラウザのES Moduleを直接使用

  • シンプルなアプリに適合、ビルド工程なし

このプロジェクトはViteを使用します。app/javascript/entrypoints/にアプリ別エントリポイントを定義します。

キーポイント

1

app/javascript/entrypoints/にエントリポイントファイル作成(例: app51.js)

2

vite_javascript_tag "app51" — レイアウトでJSロード

3

vite_stylesheet_tag "app51" — レイアウトでCSSロード

4

Tailwind CSS: @tailwind base; @tailwind components; @tailwind utilities;

5

開発時HMRで変更を即座に反映

6

プロダクション: vite:buildで最適化バンドル生成

メリット

  • Vite: 非常に高速な開発サーバー(HMR)
  • アセットフィンガープリンティングでキャッシュ最適化
  • アプリ別独立バンドルで不要なコードロード防止
  • Tailwind CSSと自然に統合

デメリット

  • Node.js依存(Vite)
  • ビルドツール設定が複雑になりうる
  • Sprockets/Import Maps/Vite混在時の混乱
  • HMRが時々動作しないことがある

ユースケース

Tailwind CSS設定 Stimulus Controllerロード アプリ別独立バンドリング 画像/フォントアセット管理