0
3

More than 3 years have passed since last update.

Rails6のフロントエンド開発:javascriptの管理がSprocketsからWebpackerへ

Posted at

rails3.1からrails5.2までは、Sprocketsで行っていたが、
rails6からWebpackerが標準に。
webpackerについてまとめ増田。

Webpackerとは

webpackのラッパー。
webpackは、jsなどの様々な形式のファイルをまとめるモジュールパンドラー。
webpackは、複数のjsモジュールを1つのファイルにまとめたりすることができる。
まとめる段階で、jsのコンパイルや圧縮などの様々な処理を実行可能。

Webpackerの使い方

app/javascript/packs/配下に、最終的にモジュールをバンドルしてまとめられるファイルを置き、それ以外ディレクトリにモジュールを置く。

rails newを行うと、app/javascript/packs/application.jsが生成されて、デフォルトに入っているjsライブラリは読み込まれている。

Webpackerが用意している設定方法

rails newで以下のファイルが自動的に生成される。

  • config/webpacker.yml
  • config/webpack/*.js これらのファイルで、色々と設定して行く。 細かい設定方法:Webpacker

デフォルトでいくつかのloaderやpluginを利用する設定になっている。
Webpackerが提供指定ないloaderやpluginを追加したい場合や、config/webpacker.ymlで設定できる範囲外のことをしたい場合はconfig/webpack/.jsを修正する。
config/webpack/
.jsは最終的なwebpackの設定を出力。

SprocketsからWebpackerへ

WebpackerはSprockets時代の開発の進め方その7でWebpack環境が使えるようになっている。

rails assets:precompileを実行の時に、webpackもコンパイルも実行される。

Webpackerの自動コンパイル

webpack環境で書いたjsは、編集ごとにコンパイルが必要。
コンパイルするには、./bin/webpackコマンドを実行。
実行するとデフォルトではpublic/packsディレクトリ配下に結果が出力される。
手動でコンパイルするのは面倒なので、必要なタイミングで自動コンパイルしてくれる。
= javascript_pack_tagメソッド実行時に対象になるファイルの更新有無をチェックし、更新されていれば./bin/webpackコマンドを通じてコンパイルを実行するという手順を踏んでいる。

コンパイル対象が多く、ページの表示に時間がかかりすぎる場合

=> webpack-dev-serverを利用すると便利
webpack-dev-serverは、webpackを利用して開発している時に便利に使えるサーバ。
webpack-dev-serverを起動していると、管理下のファイルの更新を検知し、すぐにコンパイルを実行する。

ライブラリの統合

Webpackerは、ReactやVueなど、いくつかのライブラリをすぐに導入するためのコマンドを提供。
コマンド実行の時に、パッケージや設定が入った状態になる。

新しいアプリケーションに追加

% rails new your_app_name --webpack=react

既存のアプリケーションに追加

% ./bin/rails webpacker:install:react

WebPackerの提供する設定の拡張

開発が進んでいくと、pluginやloaderを追加したくなるが、webpack.config.jsを持たないため、独自のやり方が必要。

参考

Ruby on Rails 6 エンジニア養成読本

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3