2

我在 OSX El Capitan 10.11.6 上使用 npm 5.6.0 和 node v6.9.5。

场景:我有一个 nodejs 项目,其中package-lock.json在每个 npm 安装后按预期创建。该项目,包括package-lock.json,被检入存储库,然后克隆到不同的位置(相同的机器,相同的操作系统,相同的 npm 和节点版本)。

问题:但是,这次启动 npm install 时,package-lock.json的依赖顺序不同。

背景:现在这通常不会成为问题,但我需要计算 git pre-commit 挂钩上所有文件的校验和,以在应用程序中发出信号,表明从存储库克隆项目时没有更改并希望将package-lock.json 包含在该校验和中。

所以:

工作文件夹:-> npm install -> package-lock.json -> checksum -> ABCD1234 -> commit & push 克隆文件夹:clone -> npm install -> package-lock.json -> checksum -> 9876EFGH

唯一的区别(在 OS X 上使用 filemerge 工具)是package-lock.json文件中一个依赖项的顺序不同,其他每个文件都完全相同。

两个package-lock.json文件不应该完全一样吗?还是我错过了一个不能保证的特定 npm 概念?

任何帮助/提示表示赞赏,谢谢!

(通常我会将package-lock.json附加为代码,但是这个文件太长,所以我将提供实际差异的屏幕截图)

*package-lock.json* 的差异 - 只有差异

4

1 回答 1

0

如果您想要确定或更改 package-lock.json 中的内容,npm install请使用利用npm ci

https://docs.npmjs.com/cli/ci.html

于 2020-04-22T21:46:18.020 回答