2018-01-19

Rails 4.2にWebpacker入れた

まとめ

  • Rails 4.2 で既存の AssetPipeline にまったく手を加えずに Webpacker を導入しました
  • Webpacker は導入から deploy まで簡単でよい
  • Webpacker のサイトの情報だけでなく、Webpack も Yarn も(そこそこ)追っておこう
    • さすがに Node.js と npm もさすがにね

前提知識

  • Webpacker は AssetPipeline とは独立した RailsEngine であり、共存できる
  • Webpacker は Yarn で Webpack を入れるのでそれぞれについてある程度知っている必要あり
    • (使うだけならインストール方法と簡単な使い方の手引きがあればよい)

決めなきゃいけないこと

  • Webpacker で AseetPipeline を置き換えてしまうか否か

決めたこと

  • AssetPipeline は AssetPipeline でそのままにする
  • /app/javascript/ はさすがに狂ってる気がするので /app/webpacker/ に置くことにした

webpack 管理が webpacker 管理の他に生まれるということは基本的に考えていない。

根拠

  • まだ Webpack やモダンJS、モダンCSS に習熟したエンジニアがプロジェクトの中心にいない
  • 既存のコードについて 熟練工がすぐに必要な状況ではない
  • ただし、新規では Vue.js を使ったアプリを追加する予定
    • これを AssetPipeline + CoffeeScript + jQuery で書くかというとそれはイヤだ

感想

個人的にはこれまで Browserify に寄せててどうしても Webpack と仲良くできる気がしてなかったんだけど、そんな自分でも Webpacker の導入は非常にスムーズに進んだ。

特に deploy について何も気にしなくてよかったのは本当に助かった。ビルドシステムを作ることに頭を使うのは全然やりたいことじゃないので。

ただ、やはり事前に少なくとも Node.js と Yarn の知識はあった方がよい。Webpacker のドキュメントでは Node.js 6.0+ / Yarn 0.25+ って書いてあったけど、Webpack はすでに "The current Long Term Support (LTS) release is an ideal starting point." と言っている。Webpacker はあくまで Webpack と Rails が仲良くする手法の一つなので、あくまで本家情報を大事にしよう。

おまけ

rake ( Rails 5.1- ) webpacker:install と rake webpacker:install:xxx は違う。そりゃそうだ。

参考

Webpack 2 との比較

About

例によって個人のなんちゃらです