はじめに
最近の Rails にはフロントエンドに関係する ooooo-rails といった Gem がたくさんあります。
たくさんありすぎてよくわからなかったので、分類してみました。
結論
| 関心 | Gem |
|---|---|
| アセットパイプライン | sprockets-rails, propshaft |
| JavaScript, CSS の管理(Node.js を使う場合) | jsbundling-rails, cssbundling-rails |
| JavaScript, CSS の管理(Node.js を使わない場合) | importmap-rails, tailwindcss-rails, dartsass-rails |
| Hotwire | turbo-rails, stimulus-rails |
アセットパイプライン
sprockets-rails か propshaft のどちらか一方を使いましょう。
rails new 時に --asset-pipeline オプションでどちらをインストールするかを選べます。
オプションを指定しなければ sprockets-rails がインストールされます。
$ rails new --help | grep '\--asset-pipeline'
-a, [--asset-pipeline=ASSET_PIPELINE] # Choose your asset pipeline [options: sprockets (default), propshaft]
JavaScript, CSS の管理
Node.js を使う場合
Node.js を使わない場合
Node.js を使うかどうかでどの Gem を使うのがいいのかが変わります。
jsbundling-rails と cssbundling-rails はセットで使いましょう。
importmap-rails と cssbundling-rails は組み合わせて使うものではないです。
これらの Gem に関しては注意しなければいけないことがいくつかあります。
Tailwind CSS は cssbundling-rails でも使うことができます。
cssbundling-rails の場合は npm パッケージの tailwindcss がインストールされます。
rails new 時に --javascript と --css オプションで何をインストールするかを選べます。
オプションを指定しなければ importmap-rails だけがインストールされます。
$ rails new --help | grep -e '\--javascript' -e '\--css'
-j, [--javascript=JAVASCRIPT] # Choose JavaScript approach [options: importmap (default), webpack, esbuild, rollup]
-c, [--css=CSS] # Choose CSS processor [options: tailwind, bootstrap, bulma, postcss, sass... check https://github.com/rails/cssbundling-rails]
tailwindcss-rails は --javascript オプションは指定せずに --css tailwind と指定したときにだけインストールされます。
--javascript で importmap 以外のものを指定し、かつ --css tailwind とした場合は cssbundling-rails と npm パッケージの tailwindcss がインストールされます。
dartsass-rails は tailwindcss-rails と違って --css sass と指定してもインストールされません。
--css sass と指定した場合は cssbundling-rails と npm パッケージの sass がインストールされます。
Hotwire
Turbo と Stimulus を Rails で使いやすくするための Gem です。
jsbundling-rails と importmap-rails のどちらを使っていたとしても問題なく動くように作られています。
あわせて読みたい