将NPM更新到版本5后,我发现package-lock.json
包含 package.json 的文件。
这两个文件有什么区别?
有什么优点package-lock.json
?
package.json 文件:列出您的项目所依赖的包。允许您使用语义版本控制规则指定项目可以使用的包的版本。
根据 npm 文档,
对于 npm 修改 node_modules 树或 package.json 的任何操作,都会自动生成 package-lock.json 。它描述了生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何。
该文件旨在提交到源存储库中,并用于多种目的:
基本上,package-lock.json 用于通过允许 npm 跳过先前安装的软件包的重复元数据解析来优化安装过程。
在 npm 5.x.x 之前,package.json 是项目的真实来源。 package.json 中存在的是法律。 npm 用户喜欢这种模型,并且非常习惯于维护他们的包文件。然而,当包锁第一次被引入时,它的表现却与许多人的预期相反。考虑到预先存在的包和包锁,对 package.json 的更改(许多用户认为是事实来源)并未反映在包锁中。
示例:包 A,版本 1.0.0 位于包和包锁中。在package.json中,A被手动编辑为1.1.0版本。如果认为 package.json 是真实来源的用户运行npm install
,他们期望安装 1.1.0 版本。但是,尽管在 package.json 中列出了 v1.1.0,但仍安装了 1.0.0 版本。
示例:package-lock 中不存在模块,但 package.json 中确实存在该模块。作为将 package.json 视为事实来源的用户,我希望安装我的模块。但是,由于该模块不存在于 package-lock 中,因此未安装它,并且我的代码因找不到该模块而失败。
阅读有关 package-lock.json 的更多信息官方 npm 文档 https://docs.npmjs.com/files/package-lock.json!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)