hAcKTion

日々のアウトプット場所。

npm install すると、 package-lock.json に変更がかかるのはなぜ?

リポジトリをcloneしてきて、npm installすると、package-lock.jsonに差分が出ることがある。

 

package-lock.jsonは、package.jsonでパッケージをキャレット指定するなどで、最新版が出る度に各パッケージの依存関係による差分が発生するのを防ぐ目的で作られ、そしてコミットがされているものと今のところ理解している。

 

じゃあ、なぜnpm installでpackage-lock.jsonに差分がでるのか。

 

npm installのページを見ると、どっちやねんっていう記述がある。

docs.npmjs.com

 

序盤の「Description」には、“「package-lock.json」があれば、その情報を基に依存関係構築するよー。”と書いてある。

 

でも、続きの説明で、“デフォルトでは、npm installはpackage.jsonに依存関係として記載されているすべてのモジュールをインストールします。”と書いてあるし、さらに、“npm-shrinkwrap.jsonまたはpackage-lock.jsonがある場合は、それも更新されます。”とも書いてる。

 

謎い。。。

 

ちなみに、単純にクローンしてきたリポジトリのpackage-lock.json のツリーに沿った環境であれば、 npm ci でできそう。

この点も要確認。