npm5今天发布,其中一个新特性包括通过创建package-lock.json文件进行确定性安装。
这个文件应该保存在源代码管理中吗?
我假设它类似于yarn.lock和composer.lock,它们都应该保存在源代码控制中。
npm5今天发布,其中一个新特性包括通过创建package-lock.json文件进行确定性安装。
这个文件应该保存在源代码管理中吗?
我假设它类似于yarn.lock和composer.lock,它们都应该保存在源代码控制中。
当前回答
是的,它打算被签入。我想建议它获得自己独特的提交。我们发现它给我们的差异增加了很多噪音。
其他回答
对于那些抱怨做gitdiff时噪音的人:
git diff -- . ':(exclude)*package-lock.json' -- . ':(exclude)*yarn.lock'
我所做的是使用别名:
alias gd="git diff --ignore-all-space --ignore-space-at-eol --ignore-space-change --ignore-blank-lines -- . ':(exclude)*package-lock.json' -- . ':(exclude)*yarn.lock'"
要忽略整个存储库(每个人都使用它)diffs中的package-lock.json,可以将其添加到.gitattributes中:
package-lock.json binary
yarn.lock binary
这将导致diff显示“每当包锁定文件更改时,二进制文件a/package-lock.json和b/package-llock.json都不同。此外,一些Git服务(特别是GitLab,但不是GitHub)也会在进行此操作时从diff中排除这些文件(没有超过10k行更改!)。
所有答案都说“是”,但这也取决于项目,医生说:
package-lock.json的一个关键细节是它不能被发布,如果在顶层包之外的任何地方找到它,就会被忽略。
这意味着你不需要在npm上发布依赖的package-lock.json,但你需要在repo中使用package-llock.json来锁定测试依赖的版本,构建依赖…
但是,如果您使用lerna来管理具有多个包的项目,那么应该只将package.json放在repo的根目录上,而不是放在每个子包中。你会得到这样的结果:
.git
lerna.json
package.json
package-lock.json <--- here
packages/a/package.json
packages/a/lib/index.js
packages/b/package.json
packages/b/lib/index.js
是的,最佳做法是办理登机手续(是,办理登机手续)
我同意,当看到差异时,这会引起很多噪音或冲突。但好处是:
确保开发环境和生产环境之间的每个包的版本完全相同。当在不同的时间在不同的环境中构建时,这一部分是最重要的。您可以在package.json中使用^1.2.3,但如何确保每次npm安装都会在开发机器和构建服务器中获得相同的版本,尤其是那些间接依赖包?好吧,package-lock.json将确保这一点。(借助基于锁文件安装软件包的npm-ci)它改进了安装过程。它有助于新的审计功能npm审计修复。
是的,它打算被签入。我想建议它获得自己独特的提交。我们发现它给我们的差异增加了很多噪音。
我不在项目中提交此文件。有什么意义?
它是生成的这是gitlab-ci.yml构建的gitlab中SHA1代码完整性错误的原因
虽然我确实从未在package.json中使用^作为libs,因为我有过不好的体验。