webpacker,webpack,Sprocketsを整理する

整理した表

webpackerwebpackSprockets
これ何?webpackをRails用にwrapしたGem静的アセット(特にjs)を最適化して配信するためのnode.jsのパッケージ。静的アセット(特にcss,image)を最適化して配信するためのGem。
Good少ない記述でwebpackを導入できていた。– 最新のjavascriptツールを利用できる(babelとか)
– jsのトランスパイルができる
– js以外もcss,imageも処理できる。
– nodeパッケージなのでRails以外でも使える。
– Rails標準のGemなので記述が短かったり相性が良い。
– 初期設定がほぼ不要でそのまま使える。
Bad開発終了
Retireしました。
imageをrailsで使用するには、出力先の変更など手間がかかる。– jsのトランスパイル機能はない
– Rails以外では使えない汎用性の低さ。
設定ファイルconfig/webpacker.ymlapp/assets/config/manifest.js
エントリポイントapp/javascript/packs/application.jsapp/assets/config/manifest.js
デフォルトの
input元
app/assets/config/manifest.jsに記述されたもの。
デフォルトの
output先
app/

個人的最適解

今の所のRailsアセットパイプラインの最適解は、Sprocketsだけで良いかななんて思ってます。

最大の理由は、工数が他のものに比べて少なくて済むから。
理想を言えば、Webpackだけで賄える方が、Rails以外でも使えるので技術的にも推奨したい。
フロントをRails依存から開放してあげると、マイクロサービス化する際も楽ですよね。
webpackは今の所汎用性の高いフロントの技術です。

しかし、Railsでwebpackを使うとなると、webpack自体の知識が必要です。
特に、画像をwebpackでコンパイルした後にassets/imageにおいてあげたり、自動コンパイルの設定だったり、css,jsはassets以下の任意のディレクトリに置いたりと、sprocketsと組み合わせて使う必要が出てきます。