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



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

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

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

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

有一个

有用的 StackOverflow 问题/答案,说明为什么你的 package.lock 正在发生变化。最接近的最有用的答案似乎引用了一个 NPM 错误,该错误在 2017 年 10 月在这里看到了很多活动。

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

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

  1. 在 package.json 中仅使用不带前缀的特定版本号(2.1 与 ~2.0)。(这不是很好)
  2. npm install --no-save......这并不能解决锁定文件被忽略的底层问题,但我认为会阻止package-lock.json更新。

最新更新