package-lock.jsonの役割

2111 ワード

npm 5.0以降、npm install後にpackage-lockがあります.json、役割は何ですか?
1、インストール時のパッケージのバージョン番号をロックするにはgitにアップロードし、依存パッケージが一致することを保証する必要があります.
2、package-lock.jsonは`npm install`時にファイルを生成し、現在の状態で実際にインストールされている各npm packageの具体的なソースとバージョン番号を記録します.
3、何に使いますか.npmはpackage間の依存関係を管理するためのマネージャであるため、開発者がpacakge.jsonはnpmの各ライブラリパッケージに対する自分のプロジェクトの依存を示した.必要なライブラリパッケージのバージョンを次のように表示することができます.例:
"dependencies": {
 "@types/node": "^8.0.33",
},

この中の上向き記号^は、types/nodeのバージョンが8.0.33を超え、大きなバージョン番号(8)で同じであれば、最新バージョンのtypes/nodeライブラリパッケージのダウンロードを許可することを意味します.例えば、実際にnpm installを実行する可能性がある場合にダウンロードされる具体的なバージョンは8.0.35です.
ほとんどの場合、このような新しい互換性に依存して最新のライブラリパッケージをダウンロードする場合は問題ありませんが、npmはオープンソースの世界であるため、各ライブラリパッケージのバージョンの意味が異なる可能性があります.一部のライブラリ開発者は、同じバージョン番号の同じライブラリパッケージであり、インタフェースが互換性の要求に合致するという原則を遵守していません.このとき、ユーザーは頭が痛くなります.まったく同じnodejsのコードライブラリでは、異なる時間または異なるnpmダウンロードソースの下で、ダウンロードされた各依存ライブラリパッケージのバージョンが異なる可能性があります.そのため、依存ライブラリパッケージの動作特徴も異なり、完全に互換性がない場合があります.
 
解決:
従ってnpmの最新バージョンではpackage-lockの自動生成が開始する.json機能は、開発者にソースファイルを保存したり、新しいマシンにダウンロードしたりすれば、このpackage-lockに従うことができることを知らせるためです.jsonが示す具体的なバージョンで依存ライブラリパッケージをダウンロードすると、すべてのライブラリパッケージが前回インストールしたものと同じであることを確認できます.
 
4、package.jsonの欠点
元package.jsonファイルは大きなバージョン、つまりバージョン番号の1位しかロックできません.後ろの小さなバージョンをロックすることはできません.npm installは毎回引き出したこの大きなバージョンの最新バージョンです.安定性のために依存パッケージを勝手にアップグレードすることはほとんどできません.これにより、多くの作業量、テスト/アダプタなどが発生するため、package-lock.jsonファイルが出てきました.依存をインストールするたびに、インストールしたこのバージョンにロックされます.
 
5、インストール依存問題の解決方法が違う:
もし私たちがインストールしたときのパッケージにバグがあったら、後で更新する必要がありますか?
以前:以前はpackageを直接変更したかもしれません.jsonの中のバージョン、それからnpm installになりました.
バージョンはpackage-lockにロックされているため、バージョン5以降はサポートされていません.jsonに入ったのでnpm installしかできません[email protected]このように私たちの依存を更新し、package-lock.jsonも更新できます.
例:
もし私がjquery 2.1.4というバージョンをインストールしたらgitからpackageを更新しました.jsonとpackage-lock.json、私はnpm installがnodeをカバーすることができます.modulesの中の依存ですか?
 
実は私もこの疑問があって、テストをして、直接packageを更新しています.jsonとpackage-loc.jsonという2つのファイルの後、npm installは元のバージョンを直接上書きすることができるので、コラボレーション開発の時、この2つのファイルが更新されたら、あなたの開発環境はnpm installが正しいはずです.