2017-10-09 16 views
3

我有一个部署过程,将代码检入到git存储库中,并通过Web挂钩在生产服务器上运行部署脚本。在该服务器上,我使用ssh和.pem键连接到git,从git中拉出,npm install,构建webpack并重新启动服务进程。当我通过ssh从git进行部署时,应该如何处理package-lock.json?

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

我目前的解决方案是.gitignore package-lock.json文件。但是这样就会失去它的目的,提供与我的开发机器上的版本完全相同的版本。

什么是正确的方式来处理package-lock.json

回答

1

有一个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,则您的生产部署将升级。

假设你从未来不是,有两种不同的观点在这里:

  1. 仅使用非前缀,具体版本号(2.1〜VS 2.0)在您的package.json。 (这不是很好)
  2. npm install --no-save ......这并没有解决锁文件的底层问题被忽略,但我认为将保持更新package-lock.json
+0

你能否说一下为什么#1是“不好”?尤其是当构建的可重复性非常重要时,并且包锁不锁定。 – eflat

相关问题