克隆之后:npm install生成不同的包锁文件

时间:2018-01-05 14:06:50

标签: node.js macos npm diff package-lock.json

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

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

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

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

因此:

工作文件夹: - > npm install - > package-lock.json - >校验和 - > ABCD1234 - >承诺与推 克隆文件夹:clone - > npm install - > package-lock.json - >校验和 - > 9876EFGH

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

两个 package-lock.json 文件不应该完全相同吗?或者我错过了一个特定的npm概念并不能保证这一点?

感谢您的任何帮助/提示,​​谢谢!

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

diff of *package-lock.json* - only differences

1 个答案:

答案 0 :(得分:0)

如果要确定或更改package-lock.json中的内容,请使用npm install,但是(自npm 5.7.1起)如果要确保获取的内容完全相同,请使用npm ci。提供的package-lock.json,请使用{{1}}

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