Joh*_*nny 6 github package.json greenkeeper package-lock.json dependabot
我们最近从切换greenkeeper到dependabot我们的依赖检查,我们注意到,dependabot在打开的PR只改变package-lock.json离开package.json,因为它是。
另一方面,greenkeeper, 正在提交对两个文件的更改。
到底是怎么回事?这是正常的还是我们在设置中遗漏了什么?
Joh*_*nny 22
这是一个很晚的回复。我们已经在生产环境中使用了很长一段时间,但我发现仍然有兴趣促使我认为人们可能需要一些帮助。所以,这里是:
当使用 GitHub dependentabot 时(不是 dependabot-preview,尽管conf文件实际上可能是相同的):
dependabot.yml在您的存储库目录中创建一个文件.github。increase。它看起来像这样(例如npm):
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Always increase the version requirement
# to match the new version.
versioning-strategy: increase
Run Code Online (Sandbox Code Playgroud)
就是这样。现在,package.json和package-lock.json都随着版本的增加而写入。
这是其背后的扩展逻辑。 package.json指定应用程序和库的“永久依赖约束”,同时package-lock.json跟踪满足所有这些约束的一组特定的精确版本,以避免不必要的变化。经常使用的约束类型package.json可能是“插入符范围”,如下所示:^1.2.3。插入符号使其成为一个范围,而不是精确的版本规范。除了允许确切的版本“1.2.3”之外,它还允许“1.2.9”或“1.4.1”,但不允许“2.0.6”;dependentabot 通常可以满足您的 中的所有插入符号(和其他)范围package.json,同时进行必要的升级,而无需更改任何这些相当自由的约束。versioning-strategy现在,被视为库而不是应用程序的包的默认设置是widen,即根据需要扩大范围。
继续前面的示例,如果 dependentabot 想要将通过插入符号范围指定的库^1.2.3(或根本不受限制)从“1.2.3”升级到“1.4.1”,dependabot 可以不理会package.json,因为“1.4.1”是已经允许^1.2.3。但是,如果需要对“2.0.6”进行重大升级,则必须将插入符号范围扩大。它可能最终会被类似的东西所>=1.2.3 <=2.0.6取代package.json。如果您的系统package.json非常薄(很少有约束,自由约束),则在使用默认版本控制策略时,dependabot 几乎不需要更新package.json。
但是,如果您将 npm 版本控制策略更改为increase,dependabot 会倾向于通过增加插入符的最小值来缩小插入符范围。您可以在您的 中获取^1.2.3which 代表,而不是which 代表。>=1.2.3 <2.0.0-0^1.4.1>=1.4.1 <2.0.0-0package.json
除了widen(实际上代表“必要时加宽”)和increase(代表“始终缩小范围,以排除比我们当前目标更旧的版本”)之外,还有一个值increase-if-necessary允许增加,但仅限于如果有必要实现升级目标。如果你的package.json范围很薄(很少的约束,自由的约束),你可能看不到widen和之间有太大的区别increase-if-necessary,因为 dependentabot 通常不会判断有必要干扰你所需的范围。
对我们中的一些人来说,我们应该阅读package.json语法可能性,以了解我们现有的依赖项要求是多么自由或具体,只有这样我们才能判断 dependentabot 对其更新的策略,并可能切换到不同的策略。
| 归档时间: |
|
| 查看次数: |
1068 次 |
| 最近记录: |