为什么我的 iOS 项目 Gemfile 包更新不一致?

Why does my iOS project Gemfile bundle update unconsistently?

我有一个使用 cocoapods 的 iOS 项目的简单 Gemfile

# frozen_string_literal: true
source "https://rubygems.org"

gem 'cocoapods'
gem 'fastlane'
gem 'jazzy'

我尝试通过 bundle update 更新我的包,jazzy 从版本 0.8.2 升级到 0.0.14,所以我回滚了我的 Gemfile.lock 并对我的 3 进行了 3 次单独更新gems 和一切都很好,即 jazzy 仍然是 0.8.2 版本。

我重做了一个 bundle update 并且,jazzy 再次从版本 0.8.2 升级到 0.0.14。

我在这里错过了什么?为什么我得到一组具有相同约束的不同版本?

包含有关文件内容的更多详细信息的要点:https://gist.github.com/dirtyhenry/135ec7ef73f873d5ac3236bc3da633ba

问题是依赖地狱。

Fastlane 依赖于 xcpretty,它依赖于主要版本 2 (~>2.0.7) 的 rouge,jazzy 本身依赖于不同版本的 rouge,主要版本 1 (~> 1.5) 因此,捆绑器尝试解析最高版本的 jazzy 以重用现有的 rouge 依赖项(即 0.0.14)。

但是,您可以强制捆绑器使用 0.8.2 版和更多的 jazzy,添加到您的 Gemfile:

gem 'jazzy', '>=0.8.2'

而不是

gem 'jazzy'

并再次执行bundle update

bundler docs

中查看有关版本控制的更多详细信息