Help us understand the problem. What is going on with this article?

webpacker の check_yarn_integrity オプションについて調べてみた

はじめに

Rails アプリで webpacker を利用するケースが増えていると思います。Rails 5.1以上のアプリでは、rails new myapp --webpack というオプションをつける形でも webpacker をインストールできるようになっていますよね。

しかし個人的に、使い方を理解しきれていないことが多いです。そこで理解するためのとっかかりとして、config/webpacker.yml のオプションを調べてみようと思い、その中の check_yarn_integrity というオプションについて手始めに調べてみました。

何をするオプションなのか

webpacker の README を抜粋します。

By default, in development, webpacker runs a yarn integrity check to ensure that all local JavaScript packages are up-to-date.
This is similar to what bundler does currently in Rails, but for JavaScript packages.
If your system is out of date, then Rails will not initialize.
You will be asked to upgrade your local JavaScript packages by running yarn install.

こちらを意訳してみました。

  • development 環境では、ローカルの全ての JavaScript パッケージが最新であるかを yarn integrity check する
  • Rails の bundler がやっていることと似てるが、これは JavaScript 用
  • システムが古くなっていると、Rails は初期化されない
  • yarn install でローカルの JavaScript パッケージをアップグレードするか尋ねられるようになる

実施していること

実際関連しているコード部分を抜粋すると以下になります。

https://github.com/rails/webpacker/blob/8845f37bb038ad0adff813326a7d6a034b9b9a81/lib/webpacker/railtie.rb#L16-L51

config.webpacker.check_yarn_integrity = true にしておけば、rails crails s といった Rails アプリケーションを起動する際の初期化時に、 yarn check --integrity を実行し、エラーが出たら以下のようなエラーメッセージを出力してくれるようです。

========================================
  Your Yarn packages are out of date!
  Please run `yarn install` to update.
========================================


To disable this check, please add `config.webpacker.check_yarn_integrity = false`
to your Rails development config file (config/environments/development.rb).

不要な場合は config.webpacker.check_yarn_integrity = false にすれば OK のようです。
パッケージが古くなっていたらエラーで知らせてくれるということなので、パッケージを最新の状態に保つ手助けになりそうですね。

おわりに

JavaScript のパッケージ管理は複雑で理解が難しいですね。根気よく学習していきたいと思います。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away