はじめに
browserify-railsを使っていたが、webpackでやった方がトラブルが少なそうだったので移行した。
導入
webpack-railsを使用した。
Readmeの通りに進めれば簡単に導入できる。
移行
今までproject_name/app/assets/javascript
にあったものをproject_name/webpack
に移動する。
cssもコンパイルできるようだが、こちらはrailsにまかせても良いと思う。
jsの読込をjavascript_include_tag 'application'
からjavascript_include_tag *webpack_asset_paths('application')
に変更が必要です。
また、ここでのapplication
の意味がファイル名による規則指定からconfig/webpack.config.js
内の'application':'./webpack/application.js'
のような定義指定に変わることに注意が必要です。
加えて以下のコードをwebpack
に移動させる必要がある。
//= require jquery
//= require jquery_ujs
少し悩んだが、以下のように対応した。
{
"dependencies": {
"jquery": "*",
"jquery-ujs": "*"
}
}
window.jQuery = require("jquery")
require("jquery-ujs")
最後にbabel対応しないと動かないブラウザがあると考えられるので対応する。
http://qiita.com/HayneRyo/items/74892d3a37ee96a5df60
本番
rake webpack:compile
を忘れずに実行しましょう。
ローカルで本番の見栄えを確認するにはRAILS_ENV=production SECRET_KEY_BASE=SECRET_KEY_BASE RAILS_SERVE_STATIC_FILES=true rails s
のようなコマンドで確認できます。
※ DBの設定もお忘れなく
まとめ
webpackのようなものを導入するのにはnode.jsに関する知識が少し必要になるが、最近のJavaScriptはES6が前提となってコードが書かれている事も多く、むしろ使わないとサンプルすら理解し難い。
browserify-railsのような中間ソリューションをつかった場合に起きるデメリットも若干ある。webpackを学ぶことは、少し学習コストが高いが、それでもwebpackを導入したほうがトータルでは簡単になると思われる。
webpackを単独でrailsに導入したことが無いので本当のところは分からないが、webpack-railsを使うことにより、どのようにwebpackを配置して設定すればいいかなどをサポートしてくれているように思う。