npm5今天发布,其中一个新特性包括通过创建package-lock.json文件进行确定性安装。

这个文件应该保存在源代码管理中吗?

我假设它类似于yarn.lock和composer.lock,它们都应该保存在源代码控制中。


当前回答

是的,最佳做法是办理登机手续(是,办理登机手续)

我同意,当看到差异时,这会引起很多噪音或冲突。但好处是:

确保开发环境和生产环境之间的每个包的版本完全相同。当在不同的时间在不同的环境中构建时,这一部分是最重要的。您可以在package.json中使用^1.2.3,但如何确保每次npm安装都会在开发机器和构建服务器中获得相同的版本,尤其是那些间接依赖包?好吧,package-lock.json将确保这一点。(借助基于锁文件安装软件包的npm-ci)它改进了安装过程。它有助于新的审计功能npm审计修复。

其他回答

是的,最佳做法是办理登机手续(是,办理登机手续)

我同意,当看到差异时,这会引起很多噪音或冲突。但好处是:

确保开发环境和生产环境之间的每个包的版本完全相同。当在不同的时间在不同的环境中构建时,这一部分是最重要的。您可以在package.json中使用^1.2.3,但如何确保每次npm安装都会在开发机器和构建服务器中获得相同的版本,尤其是那些间接依赖包?好吧,package-lock.json将确保这一点。(借助基于锁文件安装软件包的npm-ci)它改进了安装过程。它有助于新的审计功能npm审计修复。

是的,您可以提交此文件。根据npm的官方文件:

对于npm修改node_modules树或package.json的任何操作,package-lock.json都会自动生成。它描述了生成的确切树,以便后续安装能够生成相同的树,而不考虑中间的依赖关系更新。此文件旨在提交到源存储库[.]中

是的,提交package-lock.json是一种标准做法。

提交package-lock.json的主要原因是项目中的每个人都使用相同的包版本。

赞成的意见:

如果您遵循严格的版本控制,并且不允许自动更新到主要版本,以避免在第三方包中发生向后不兼容的更改,那么提交包锁定会有很大帮助。如果您更新了一个特定的包,它会在package-lock.json中更新,并且使用存储库的每个人在接受您的更改时都会更新到该特定版本。

欺骗:

这会让你的拉取请求看起来很难看:)

npm安装无法确保项目中的每个人都使用相同的软件包版本。npm ci将对此有所帮助。

全局禁用package-lock.json

在终端中键入以下内容:

npm config set package-lock false

这对我来说真的很管用

是的,它打算被签入。我想建议它获得自己独特的提交。我们发现它给我们的差异增加了很多噪音。