モダンJavaScript開発環境 on Rails


稿@hokaccha

RailsECMAScript6JavaScript

RailsSprocketsgemJavaScriptCSSSprocketsassetAltJSminifyasset

JavaScriptJavaScriptRails


ECMAScript6使

CommonJS ModulesES6 Modules使

npm使


browserifyBabel使Rails

gulp使


Railsasset使gulpbrowserify使asset

Rails

RailsAPI

RailsassetJavaScriptbrowserifyCSSSassminifydigestRailsRails

JavaScriptgem*1Sprockets//= require

gulpRailsgulp-rev-rails-manifestgulpSprocketsgulp-sprocketsRailsRails

browserify使


browserifyRailsbrowserifyapp/assets/javascripts
$ browserify -t babelify app/assets/javascripts/src/main.js -o app/assets/javascripts/bundle.js

babelifybrowserifyBabelbrowserify*2

main.jsapp/assets/javascriptsbundle.jsSprocketsload pathapplication.js
//= require bundle.js

ECMAScript6browserifySprocketsassets:precompilebrowserify

watchifyJavaScriptbrowserifybrowserify10watchify1

JavaScriptSprocketsJavaScript*3

JavaScriptrails serverbrowserify-rails

browserify-rails使


browserify-railsRailsbrowserify使gem

https://github.com/browserify-rails/browserify-rails

SprocketsSprocketsbrowserifySprocketsPost Proceccer

browserifyrails serverJavaScriptSprocketsRailsasset使

browserify-railsbrowserify-incremental使browserify使watchifyJavaScript

browserify-railsbrowserifyMultiple bundles使React.jsJavaScriptJavaScript

RailsJavaScriptbrowserify-rails



https://github.com/hokaccha/browserify-rails-example


RailsECMAScript6npmJavaScript


*1:Turbolinksなど

*2:正確にはtransform

*3:livereloadのような仕組みをいれることによって解決できる可能性もあるかもしれません