javascript – 当我从git通过ssh部署时,我应该如何处理package-lock.json?

我有一个部署过程,我将代码检入git存储库,并通过Web钩子在生产服务器上运行部署脚本.在该服务器上,我使用ssh和.pem键连接到git,从git,npm install,构建webpack并重新启动服务进程.

我从不打算从prod服务器提交任何东西 – 它们应该能够自动部署.但是,这不起作用,因为在运行npm install时经常更新package-lock.json文件,因此下次部署时,git pull步骤失败,说我与现有的package-lock.json文件冲突因为它有未提交的更改.

我目前的解决方案是.gitignore package-lock.json文件.但这违背了它的目的,提供与我的开发机器上相同的构建.

处理package-lock.json的正确方法是什么?

最佳答案 有一个
helpful StackOverflow Question/Answer about why your package.lock is changing.最接近最有用的答案似乎是参考
NPM bug that’s seeing much activity here in October 2017.

但是目前,package.json会覆盖package-lock.json,这意味着如果您使用~2.1并且该软件包的2.2版本,您的生产部署将会升级.

假设你不是来自未来,这里有两个不同的想法:

>在package.json中仅使用非前缀的特定版本号(2.1 vs~2.0). (这不是很好)
> npm install –no-save …这并没有解决锁定文件被忽略的问题,但我认为会阻止package-lock.json更新.

点赞