Webpackとは
最近、フロントエンドの規模が段々大きくなり、Javascriptのコード量が多くなって、コードのメンテナンスのためにモジュール化して管理する場合が多い。また、いろんなJSのフレームワークやNodeのライブラリを使うようになる。でもJSは基本的にこういうモジュール間のimport/include
をサポートしてくれないのでモジュールを管理するツールが必要になる。それのために出てきたものがモジュールバンドリングだ。モジュール間の依存性を理解し、それを元にうまく動ける静的アセットを作ることがモジュールバンドリングであり、それを実行するものがモジュールバンドラーだ。もちろんWebpack
は唯一のモジュールバンドラーではない。既にRequireJS
,Browserify
などのモジュールバンドラーがあるけど、最近のフロントエンドにはWebpack
が主流になっている。
RailsでのWebpack
Rails5.1ではWebpack
を通してReact
,Vue.js
,Angular
,Elm
などのフレームワークがサポートされ、さらに簡単に使えるようになった。webpackerを使えばプロジェクトにJSのフレームワークやライブラリを簡単に入れることができるし、Webpackのconfigを設定してBabelを使ってトランスパイルすることももちろんできる。
webpackerの使い方
インストール
Rails5.1には
1
|
|
のように後ろに--webpack
をつけてプロジェクト作成の時インストールするか普通にgemfileに入れてbundle install
をしてから./bin/rails webpacker:install
をすることでwebpackerを入れることができる。
Rails5.1でサポートするReact
,Vue.js
,Angular
,Elm
を指定したい時は
1 2 3 4 |
|
のように指定する。
webpack-dev-server
通常のwebpackコマンドも--watch
または-w
オプションつきで実行することによりファイルの変更を検知して自動でリビルドを行うことが可能だが、webpack-dev-serverはそれに加えて、ブラウザも自動的にリロードしてくれる(Automatic Refresh)。
ブラウザ全体のリロードではなく、編集したモジュールのみを更新するHot Module Replacement
という仕組みが使える。
といった機能を備えているため、ローカルで開発するにはwebpack-dev-server
を使う方が便利。
それに、rails serverも同時に動かしているならばforeman
というgemを使ったら便利。webpackerのgithubページにもそれを書いてある。
1
|
|
1 2 3 |
|
1
|
|
ブラウザに表示
ビューに
1 2 |
|
のように入れて使う。