【问题标题】:How should I handle package-lock.json when I deploy from git via ssh?当我通过 ssh 从 git 部署时,我应该如何处理 package-lock.json?
【发布时间】:2018-03-21 03:08:15
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript node.js git npm


    【解决方案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 与 ~2.0)。 (这不是很好)
    2. npm install --no-save... 这并不能解决锁定文件被忽略的潜在问题,但我认为会阻止 package-lock.json 被更新。

    【讨论】:

    • 你能谈谈为什么#1“不是很好”吗?尤其是当构建的可重复性非常重要,并且 package-lock 没有锁定时。
    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 2019-09-05
    • 2017-08-14
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 2018-11-15
    相关资源
    最近更新 更多