lockfile の作り直しはバージョンアップである

  • 開発
  • ポエム

依存のバージョンアップを自動でマージしているチームはあまり見かけない。Renovate を入れても PR は人が読んでからマージする決まりになっていて、メジャーはもちろんパッチでさえ「何が壊れるか分からないから」と溜まっていく。その同じチームが、lockfile がコンフリクトしたら消して npm install し直し、出てきた差分をそのままコミットしている。

lockfile を作り直すと、package.json の ^ や ~ の範囲に収まる最新版が、推移的な依存まで含めたすべての依存に入る。これは Renovate が 1 本ずつ出してくる PR を全部まとめて、changelog も読まずにマージしたのと同じことだ。

npm install が勝手に lockfile を書き換えるわけではない。今の npm は、lockfile の版が package.json の範囲に収まっていれば lockfile の版をそのまま入れるとドキュメントに書いてある。書き換わるのは、package.json を変えたとき、新しいパッケージを足して推移的な依存を解決し直したとき、lockfile を消したときである。どれも日常的にやっていて、そのたびに範囲内のバージョンアップが起きている。

それなら Renovate の PR も同じ扱いでいいはずである。^ を書いた時点で、範囲内の更新は受け入れると宣言している。怖がっているのは「バージョンアップ」という名前の付いた変更だけで、名前の付いていない変更は毎日受け入れている。