package-lock.jsonがコンフリクトした場合の正しい解消方法

ここにブランチが3つあります

  • main
  • featureA
  • featureB

featureAとBそれぞれpackage.jsonにアプデがあり、featureAを先にmainにマージ済みの状態

main←featureBでpackage.jsonないしpackage-lock.jsonにコンフリクトが発生する。

普通に考えたらfeatureB←mainして npm install すれば解決するが、パッケージのマイナーバージョンを変えたくない場合はこの方法だとNG。package-lock.jsonが更新されて依存パッケージのマイナーバージョンが変更されてしまう。

そんなときは、mainをmainBとしてフォークして、mainBにfeatureBで追加したパッケージを改めてインストール。 npm install hogehoge@1.2.3

featureB←mainBするとやっぱりpackage-lock.jsonがコンフリクトするのでmainBのものを使う git checkout --theirs package-lock.json

で、 npm ci などすれば正常化できるのだ

mainも取り込み済みなので、main←featureBがコンフリクトすることもない。