我有一个部署过程,我将代码签入 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 版本,您的生产部署将得到升级。
假设你不是来自未来,这里有两个不同的想法:
- 在 package.json 中仅使用不带前缀的特定版本号(2.1 与 ~2.0)。(这不是很好)
-
npm install --no-save
......这并不能解决锁定文件被忽略的底层问题,但我认为会阻止package-lock.json
更新。