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に関する文書( doc1 、 doc2 )には、それについては何も言及されていません。
編集:
もう少し考えてみると、誰かがあなたのプロジェクトを古いバージョンのNPM(5.xより前)で使用したいのであれば、それでもすべての依存関係をインストールしますが、それほど正確ではないバージョン(パッチバージョン)
package-lock.json
とpackage.json
の両方が必要ですか? いいえ。
package.json
が必要ですか? はい。
package-lock.json
だけのプロジェクトがありますか? いいえ。
package.json
は、プロジェクトのプロパティ、説明、作成者およびライセンス情報、スクリプトなどを定義するなど、依存関係以外にも使用されます。package-lock.json
は、依存関係を特定のバージョン番号にロックするためだけに使用されます。
あなたの質問がロックファイルがあなたのソース管理にコミットされるべきであるならば - それはそうするべきです。ある状況下では無視されます。
プルリクエストとコミット履歴が膨大になっていることがわかりました。変更が見られる場合は、別にコミットしてください。
package-lock.json
:インストール済みの各パッケージの正確なバージョンを記録します。これにより、それらを再インストールすることができます。将来のインストールでも同じ依存関係ツリーを構築できるようになるでしょう。
package.json
:アプリが必要とする最小バージョンを記録します。特定のパッケージのバージョンを更新しても、その変更はここには反映されません。