npm 5 was released today和其中一个新功能包括创建package-lock.json
文件时的确定性安装。
这个文件应该保存在源代码管理中吗?
我假设它类似于yarn.lock
和composer.lock
,这两者都应该保持在源代码控制中。
发布于 2017-06-17 05:18:32
是的,是要办理登机手续的。我想建议它有自己的唯一提交。我们发现它给我们的diffs增加了很多噪音。
发布于 2018-06-22 15:04:24
对于那些在做git diff时抱怨噪音的人:
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
这将导致差异,显示“二进制文件a/ package -lock.json和b/package-lock.json不同的包锁文件。此外,一些Git服务(特别是GitLab,但不是GitHub)也会排除这些文件(不超过10k行的变化!),当在线查看时,这样做。
发布于 2019-01-09 11:15:13
我使用npm来生成缩小/丑化的css/js,并生成django应用程序所服务的页面中所需的javascript。在我的应用程序中,Javascript在页面上运行以创建动画,有时执行ajax调用,在VUE框架内工作和/或使用css。如果package-lock.json对package.json中的内容有一些覆盖控制,那么这个文件可能有必要只有一个版本。根据我的经验,它要么不会影响npm install安装的内容,要么就算有影响,也不会对我所部署的应用程序产生负面影响。我不使用mongodb或其他类似的传统瘦客户端应用程序。
我从repo中删除了package-lock.json,因为npm install会生成这个文件,npm install是运行该应用程序的每台服务器上部署过程的一部分。node和npm的版本控制是在每台服务器上手动完成的,但我要注意它们是相同的。
当npm install
在服务器上运行时,它会更改包-lock.json,如果服务器上的存储库记录的文件有更改,则下一次部署将不允许您从原始位置提取新的更改。也就是说,您不能部署,因为拉取将覆盖对package-lock.json所做的更改。
你甚至不能用repo (重置硬源主机)上的东西覆盖本地生成的包-lock.json,因为npm会在你发出命令时抱怨,如果包-lock.json由于npm安装而没有反映node_modules中的内容,从而破坏部署。现在,如果这表明在node_modules中安装了略微不同的版本,再一次地,这从来没有给我带来问题。
如果node_modules不在您的存储库中(也不应该在其中),那么应该忽略package-lock.json。
如果我遗漏了什么,请在注释中纠正我,但是版本控制是从这个文件中获取的这一点没有任何意义。文件package.json中有版本号,我假设这个文件就是在npm install发生时用来构建包的文件,因为当我删除它时,npm install会抱怨如下:
jason@localhost:introcart_wagtail$ rm package.json
jason@localhost:introcart_wagtail$ npm install
npm WARN saveError ENOENT: no such file or directory, open '/home/jason/webapps/introcart_devtools/introcart_wagtail/package.json'
但是,当安装node_modules或应用npm来构建js/css时,如果我删除package-lock.json,就不会有任何问题。
jason@localhost:introcart_wagtail$ rm package-lock.json
jason@localhost:introcart_wagtail$ npm run dev
> introcart@1.0.0 dev /home/jason/webapps/introcart_devtools/introcart_wagtail
> NODE_ENV=development webpack --progress --colors --watch --mode=development
10% building 0/1 modules 1 active ...
https://stackoverflow.com/questions/44206782
复制相似问题