この記事では、Node.js の package.json ライブラリのバージョン番号について説明します。これには一定の参考値があります。必要な友人は参照できます。お役に立てば幸いです。
#~^
の違い 最近、いつもいくつかの問題に遭遇しました。ローカルでは問題なく動作しますが、オンラインでは問題が発生し、ローカルで再現できません。その後、node_modules ディレクトリを削除して再インストールしたところ、ローカルで問題が再現され、git 履歴を見ると、package.json のバージョン番号を変更している人がいないことがわかり、package 内のライブラリを詳しく調べました。 json.バージョン番号; ~ と ^"babel-loader": "^7.1.1", "body-parser": "~1.15.2"
~## ではなく ^
が優先されます。
#バージョン番号 x.y.z を例に挙げます#xx: メジャー バージョン番号 (互換性のない API 変更を行う場合)
z:リビジョン番号。下位互換性の問題
~x.y.z
body-parser: ~1.15) .2 の場合、このライブラリは 1.15.z の最新バージョンと一致します。1.16.0 が表示された場合、
^x.y.z
は自動的にアップグレードされませんが、x の最新バージョンに更新されます。例:
babel-loader: ^7.1.1、このライブラリは 7.y.z の最新バージョンと一致します。8.1.1 が表示された場合、自動的にアップグレードされません。
を参照してください。 npm 公式の説明
^1.2.3 := >=1.2.3 <2.0.0
^0.0。 3 := >=0.0.3 <0.0.4
ほとんどの場合、このバージョン番号規則に従う依存パッケージは問題ありませんが、npm はオープンソースの世界であり、すべてが厳密であるわけではありません。このルールに従うと、上記の問題が発生します;
パッケージ ロックが必要な理由
次のようないくつかの理由が考えられます。全員のコンピュータ上で npm install を実行した後にインストールされる依存関係のバージョンが同じであるという保証はありません1. package.json に記録されている依存パッケージのバージョンがバージョン範囲である場合、npm i が実行されると、このパッケージは最新バージョン
2 に更新します。パッケージの修正バージョン (A 1.1.1 など) に依存している場合でも、依存しているパッケージ A は他のパッケージ B に依存している可能性があり、A は次の場合に semser を使用することもあります。依存関係の宣言。^1.2.3 などの名前付け、パッケージ B が新しいバージョンをリリースすると、パッケージ B も新しいバージョンにインストールされます3。人によって使用される npm プログラムのバージョンは異なります
パッケージのバージョンに依存している場合 一貫性がないと、開発環境と運用環境の間で動作の不一致が生じたり、異なるチーム メンバー間で製品環境に差異が生じたりする可能性があります。
パッケージ バージョンの不一致を解決する方法
1 .npm は package-lock.json ファイルを使用してこの問題を解決します
npm install を実行すると、package.json ファイルが自動的に生成されます。通常のインストール、更新などを実行すると、package.json を変更する可能性のある npm コマンドが自動的に package-lock.json ファイルを同期的に変更します。npm install xxx npm rm xxx npm update xxx
npm shrinkwrap
npm-shrinkwrap.jsonを生成するにはこのコマンドは、新しいnpm-shrinkwrapを作成するか、既存のnpm-shrinkwrapを上書きします。 package-lock.json ファイルに基づく json ファイル。このコマンドによって作成および更新されたファイルは、他の既存または将来の package-lock.json ファイルよりも優先されます。 3.yarn を使用する
高速: ダウンロードした各パッケージはダウンロードを繰り返すことなくキャッシュされ、動作可能です。最大限のリソース使用率による信頼性: 詳細かつ簡潔な形式のロックファイル ファイルと依存関係をインストールするための決定論的アルゴリズムを使用することで、あるシステムで実行されているインストール プロセスが他のシステムでも同じように実行されることを保証できます。システム。
以上がNode.js の package.json のライブラリのバージョン番号の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。