web-dev-qa-db-ja.com

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

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より前)で使用したいのであれば、それでもすべての依存関係をインストールしますが、それほど正確ではないバージョン(パッチバージョン)

71
Omri Luzon

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

package.jsonが必要ですか? はい

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

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

30
Markus Stefanko

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

プルリクエストとコミット履歴が膨大になっていることがわかりました。変更が見られる場合は、別にコミットしてください。

2
Stanley Kirdey

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

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

0