Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Rails: Webpacker 5.1.0でcheck_yarn_integrityオプションが廃止された

小ネタかつRailsウォッチ20200427でも書いた話で恐縮ですが。

Webpacker 5.1.0でcheck_yarn_integrityオプションが廃止に

Docker上のRails 6アプリでgemを更新した後、develpment環境で起動したときに起動が露骨に速くなったことで、Webpackerの更新に気づきました。

問題

yarnのintegrityチェックはこれまで開発者を混乱・イライラさせてきた(#2517#2322#1568)。
integrityチェックはイニシャライザで実行されるので、その環境を起動するRailsコマンドを潜在的に邪魔し、多くの開発者をびっくりさせていた(1135)。
そしてYarnのメンテナー自身も利用はやめとけと言っている(yarnpkg/yarn#6427 (comment))。
yarn checkコマンドもYarn 2.0で削除された。

ソリューション

integrityのイニシャライザと設定オプションを削除する。開発者は、ローカル環境でyarn installを実行し、デプロイ時にyarn install --frozen-lockfileを実行するようにしていただきたい。
同PRより大意

おかげでRails起動が速くなってとても助かります😂。

5.1.0より前の古いWebpackerを使っている方も、config/webpacker.ymlのcheck_yarn_integrity:行は遠慮なく削除しちゃいましょう。

参考: アップグレード前のwebpacker.yml

Webpacker 5.1.0へのアップグレード前の自分のconfig/webpacker.ymlは以下のとおりでした。

default: &default
  source_path: app/javascript
  source_entry_path: packs
  public_root_path: public
  public_output_path: packs
  cache_path: tmp/cache/webpacker
  check_yarn_integrity: false  # 削除した
  webpack_compile_output: true

# 略

development:
  <<: *default
  compile: true

  # Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
  check_yarn_integrity: true  # 削除した

おたより発掘

関連記事

以下の記事でもyarnのintegrityチェックはオフにしているそうです。

Rails 6+Webpacker開発環境をJS強者ががっつりセットアップしてみた(翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。