package-lock.jsonとpackage.jsonの両方が必要ですか?


149

NPMを最新バージョン(3.Xから5.2.0に)に更新npm installし、既存のプロジェクトで実行した後、自動作成されたpackage-lock.jsonファイルを取得します。

とはpackage-lock.json対照的に、正確な依存関係ツリーを提供することができますpackage.json

その情報だけから、それpackage.jsonは冗長で、もう必要ないようです。

NPMが機能するためには、どちらも必要ですか? ファイル
のみを使用することは安全package-lock.jsonですか、それとも可能ですか?

package-lock.json(doc1doc2)のドキュメントでは、それについて何も言及されていません。

編集

それについて少し考えた後、誰かが古いバージョンのNPM(5.xより前)でプロジェクトを使用したい場合でも、依存関係はすべてインストールされますが、バージョン(パッチバージョン)は正確ではないという結論に達しました


回答:


103

package-lock.jsonとの両方が必要package.jsonですか?いいえ

あなたは必要package.jsonですか?はい

あなただけのプロジェクトはありpackage-lock.jsonますか?いいえ

package.jsonなど、プロジェクトのプロパティ、説明、作者とライセンス情報、スクリプトを定義するように-以上の依存関係のために使用されているpackage-lock.jsonだけに、特定のバージョン番号にロックの依存関係に使用されています。


19

package-lock.json:インストールされた各パッケージの正確なバージョンを記録し、再インストールできるようにします。将来のインストールでは、同じ依存関係ツリーを構築できるようになります。

package.json:アプリが必要とする最小バージョンを記録します。特定のパッケージのバージョンを更新しても、変更はここには反映されません。


1
上記が当てはまり、package.jsonアプリが必要とする最小バージョンを記録し、package-lock.jsonがインストールされた各パッケージの正確なバージョンを記録する場合、パッケージ内のモジュールがバージョン0.112.1に設定されているという奇妙な状況があります.jsonとパッケージlock.jsonで0.110.0 ...
ジャン=フランソワ・ビーチャム

6

あなたの質問がロックファイルがあなたのソース管理にコミットされるべきかどうかであるならば-それはそうするべきです。特定の状況下では無視されます。

私はそれがプルリクエストとコミット履歴を膨らませているのを見つけたので、それが変わったのを見るなら、それのために別のコミットをしてください。


1
いいえ、私はソース管理へのコミットについて尋ねていませんでした。NPMが両方を同時に動作させる必要がある場合。package-lock.jsonはより冗長なバージョンのように思われるpackage.jsonので、ロックファイルのみを使用しても安全または可能ですか。
Omri Luzon

わかりました、私はプロジェクトにpackage.jsonを残しました、主にnpmスクリプトのための場所を持っています。
スタンレーカーデイ2017

1
バージョン管理下に置くかどうかについては、別の質問がありpackage-lock.jsonます。
エイドリアンW

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.