npm5今天发布,其中一个新特性包括通过创建package-lock.json文件进行确定性安装。
这个文件应该保存在源代码管理中吗?
我假设它类似于yarn.lock和composer.lock,它们都应该保存在源代码控制中。
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
这对我来说真的很管用
是的,它打算被签入。我想建议它获得自己独特的提交。我们发现它给我们的差异增加了很多噪音。