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

时间:2017-10-09 20:20:19

标签: javascript node.js git npm

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

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

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

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

1 个答案:

答案 0 :(得分: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. 在package.json中仅使用非前缀的特定版本号(2.1 vs~2.0)。 (这不太好)
  2. npm install --no-save ...但没有解决锁定文件被忽略的问题,但我认为会使package-lock.json无法更新。