小ネタかつRailsウォッチ20200427でも書いた話で恐縮ですが。
Webpacker 5.1.0でcheck_yarn_integrityオプションが廃止に
Docker上のRails 6アプリでgemを更新した後、develpment環境で起動したときに起動が露骨に速くなったことで、Webpackerの更新に気づきました。
- PR: Remove yarn integrity check by rossta · Pull Request #2518 · rails/webpacker
- Changelog: webpacker/CHANGELOG.md at master · rails/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 # 削除した
おたより発掘
やはりこのオプションいらない子だったのか〜。良い方へ変わったようで良かった。 https://t.co/9ALZUkhDFp
— 佐藤正志@サークルアラウンド (@ms2sato) May 7, 2020
関連記事
以下の記事でもyarnのintegrityチェックはオフにしているそうです。