npmのバージョンによってロックファイルのフォーマットが異なる
ロックファイルのバージョンはnpmに対応する
npm installで作成されるpackage-lock.jsonのlockfile-versionは1〜3の値を取り、デフォルト値はnpmのバージョンによって異なる。
| NPM | Available | Default; Converting |
|---|---|---|
| 5 | 1 | 1 |
| 6 | 1 | 1 |
| 7 | 1,2,3 | 2; 1 -> 2, 2 -> 2, 3 -> 3 |
| 8 | 1,2,3 | 2; 1 -> 2, 2 -> 2, 3 -> 3 |
| 9 | 1,2,3 | 3; 1 -> 3, 2 -> 2, 3 -> 3 |
NPM 6以下では1種類しかない
npm version 6以下ではlockfile-versionは1固定になる。
NPM 7,8では2以上に変換される
npm version 7ではlockfile-versionに3が導入された。より高速にパッケージのインストールが行える形式になっている。
2は1から3への移行のために両方の情報を含んだ形式となっていてファイルサイズが大きくなっている。
package-lock.jsonがない、もしくは、lockfile-versionが2以下の場合はlockfile-versionを2のファイルが生成される。
NPM 9ではデフォルト値が3に変更された
npm version 9ではデフォルト値とlockfile-versionが1だったときの変換先が3に変更された。