LoginSignup
23
12

More than 1 year has passed since last update.

package-lock.json の lockfileVersion が変更されてしまう場合の対処法

Last updated at Posted at 2021-10-10

解決策

チーム内でnpmのメジャーバージョンを合わせる。

発生した問題

npmをアップデート

npmで作業中に以下のようなアップデートガイドが表示されたため、npmをv6からv7にアップデートしました。(Node.jsはv14)

Update available 6.14.15 → 7.24.2
Run npm i -g npm to update

lockfileVersion 1 → 2

すると、その後に npm i を実行した際、以下のような警告が表示されました。

npm WARN old lockfile:
The package-lock.json file was created with an old version of npm,
so supplemental metadata must be fetched from the registry.

通常より時間がかかり、installは成功しますが、 package-lock.jsonlockfileVersion が 1 → 2 に変わり、ファイル全体に大きな修正が入っていました。

lockfileVersion 2 → 1

例えばこの package-lock.json をpushして、他のチームメンバー(npm v6使用)が npm i を実行した場合、以下のような警告が表示されます。

npm WARN read-shrinkwrap:
This version of npm is compatible with lockfileVersion@1,
but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!

この場合もinstallは成功しますが、 lockfileVersion が 2 → 1 に戻り、ファイル全体に再び大きな修正が入ります。

原因

npm Docs によると、npm v7からは、生成される package-lock.json のフォーマットが大きく変更されていて、 lockfileVersion: 2 が指定されるようです。

解決策: チーム内でnpmバージョンを合わせる

npmは、Node.jsと一緒にインストールされ、デフォルトのバージョンは Node v14 → npm v6Node v15 → npm v7 のように、ある程度決まっているようです。

ですが、今回のように各個人がnpmをアップデートした際に、 package-lock.json の中身が変わってしまうという場合があるため、チーム開発では、npmのバージョンについても、メジャーバージョンだけは合わせておいた方が良いようです。

npm i -g npm@バージョン などで指定バージョンをインストールできます。

(バージョン情報は npm/cliのGitHub 等を参照)

23
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
12