package.jsonにおけるバージョンロックの方法と問題解決について

前提知識: まず、package.json と package-lock.json の関係と違いを理解してください。この記事を読んでください。

それでは、バージョンをロックする方法について話しましょう。

まず、package.json の ^ 記号を削除する必要がありますが、package.json の ^ を削除するだけでは甘すぎます。実際には package-lock Version を使用しているため、大きな落とし穴が待っているはずです。 .json内。[はい、大きな穴から出てきたところです。

ロックされたバージョンの前は、私たちのプロジェクトは次のようになっていました

package-lock.json ファイルを変更せずに package.json 内の ^ を削除するだけであれば、他の環境も package-lock.json に従ってインストールされるため、通常は問題ありません。ただし、問題が発生する可能性のある状況がいくつかあります

(1) cnpm を使用する場合、問題は大きくなります。cnpm にはバージョンロックの機能がないため、cnpm は package-lock.json に従ってインストールされず、一致しないバージョン 4.13.0 がインストールされます。実際に何を使用するか、これは非常に重要です。何か問題が発生する可能性があります。

(2) インストールに失敗した場合、package-lock.json ファイルを削除して再インストールすることがありますが、これは悲劇であり、再インストール後の package-lock.json もバージョン 4.13.0 になります。次に、この package-lock.json を再度送信すると、同僚全員が間違ったバージョンをインストールすることになります。

したがって、バージョンをロックするときは、package-lock.json によって実際に適用されるバージョンに従って package.json を更新する必要があります。上記の例では、package.json 内のnode-sass をバージョン 4.14.1 に変更し、前の ^ を削除します。これは基本的にはもう問題ありません。

しかし、別の問題があり、上記の方法に従ってバージョンがロックされるということは、プロジェクトの依存バージョンはロックされますが、間接的に依存するバージョンはロックされないことを意味します。参考までに、npm 依存関係のバージョンをロックしてください - Nuggets

ただし、私が遭遇したプロジェクトでは、一般的に問題はなく、シンプルで便利で、自分で選択できるため、記事の方法に従って設定するだけで十分です。

おすすめ

転載: blog.csdn.net/qq_17335549/article/details/130343653
おすすめ