dependabot 只更新锁文件

Posted

技术标签:

【中文标题】dependabot 只更新锁文件【英文标题】:dependabot only updates lock file 【发布时间】:2020-05-28 18:57:57 【问题描述】:

我们最近从 greenkeeper 切换到 dependabot 以进行依赖项检查,我们注意到 dependabot 正在打开 PR,仅更改 package-lock.json 保持 package.json 不变。

另一方面,greenkeeper 正在提交对两个文件的更改。

发生了什么事?这是正常的还是我们错过了设置中的某些内容?

【问题讨论】:

嘿@Johnny,你有没有找到合适的解决方案? @flaky 是的。在dependabot 配置文件中有一个配置设置,它也强制将所有更新写入package.json。您应该仔细阅读 GitHub 的dependabot 文档。我可能会写一个关于它的答案,以更好地解释该怎么做。 我想要一个很好的解释 :)dependabot 文档有时会受到打击和错过 :) @flaky,检查我自己的答案。 【参考方案1】:

这是一个很晚的回复。我们已经在生产中工作了很长时间,但我看到仍然有兴趣促使我认为人们可能需要一些帮助。所以,这里是:

当使用 GitHub 依赖机器人时(不是 dependabot-preview,虽然 conf 文件实际上可能是一样的):

在您的 repo 的 .github 目录中创建一个 dependabot.yml 文件。 指定increase 中的versioning-strategy。

它看起来像这样(例如npm):

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    # Always increase the version requirement
    # to match the new version.
    versioning-strategy: increase

就是这样。现在,package.jsonpackage-lock.json 都被写入并增加了版本。

【讨论】:

【参考方案2】:

文件 package-lock.json 的目标是跟踪已安装的每个包的确切版本,以便产品以相同的方式 100% 可重现,即使包是由他们的维护者更新。 reference link is here

所以 package.json 和 package-lock.json 有不同的用途。

dependabot 尝试仅推送修改后的 package-lock.json 没有错误。

【讨论】:

他没有询问.lock和清单文件之间的区别的解释......【参考方案3】:

类似的事情发生在我身上,可能是两件事:

    在dependendabot 配置中,您只需接受package-lock.json 的更新 (这是对我有用的)在 package.json 中的键 Name 中,在我的情况下,您可能用不正确的符号编写了 web-app 符号 - 导致我没有更新它现在我将其命名为webapp

【讨论】:

让我理解一下,npm 上可能 99% 的包的名称中都有一个“-”号。如果这是问题所在,那么这是dependabot 中的一个大错误(可能已经发现)。 不是那个,我说的是package.json中的项目名称例如:` "name": "ProjectN", => 这就是我说的. “version”:“1.0.0”,“description”:“Web App”,“main”:“index.js”`这将是错误的方式"name" : "Project-N"

以上是关于dependabot 只更新锁文件的主要内容,如果未能解决你的问题,请参考以下文章

使用Sqlserver更新锁防止数据脏读

三级封锁协议

并发相关随笔(持续更新)

是啥导致了这个dependabot问题?

在 Azure 函数中禁用主机锁租约更新调用的日志记录

悲观锁和乐观锁