1. ホーム
  2. javascript

[解決済み] パッケージロック.json`を削除して競合を迅速に解決する

2022-06-18 14:56:20

質問

チームで作業していると、通常 package-lock.json でのマージの競合に直面したとき、私の迅速な解決策はいつもファイルを削除し、再生成して npm install . この修正は、これまで認識できるような問題を引き起こしていないため、この修正の意味について真剣に考えたことはありません。

ファイルを削除して npm を再作成することに問題はありますか?

どのように解決するのですか?

はい、それはすべてのプロジェクトに悪い影響を与える可能性があります。

  1. もしあなたのチームが npm install の後に git pull というように、それぞれ異なる依存関係のバージョンを使っていることがわかります。そのため、quot;but it works for me!!! " と "I don't understand why my code does not work for you" で終了します。

  2. チーム全員が npm install そして、(おそらく、かなり苦痛な)デバッグの後、第3レベルの依存関係が次のメジャーバージョンに更新されたためであることがわかり、これがいくつかの破壊的な変更につながったことがわかります。

結論: 決して削除しないでください。 package-lock.json .

はい、第一レベルの依存関係については、範囲なしで指定した場合(例えば "react": "16.12.0" のように) 範囲を指定しない場合は npm install . しかし、2 レベル以上の深い依存関係 (依存関係が依存している依存関係) については同じことは言えません。 package-lock.json は安定性のために本当に重要です。

あなたの場合、次の方法をとったほうがいいでしょう。

  1. のコンフリクトを修正する。 package.json
  2. 実行 npm install

見た目通り簡単です。yarnにも同じことが言えます。yarnはロックファイルの衝突を自分自身で解決します。でのすべての衝突を解決することがここでの唯一の要件です。 package.json にあるすべての衝突を事前に解決しておくことです。

について ドキュメント でのマージの衝突を修正します。 package-lock.json を修正してくれます。

[2021年から更新】重要! もしあなたが既にあるライブラリを使っていて、そのメンテナのnpm/GitHubアカウントがハッキングされた場合。そして、悪意のあるコードが含まれた新しいバージョンがリリースされました。そして、あなたは package-lock.json をそのままにしておく。あなたは大丈夫です。落とすと大変なことになります。