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

时间:2017-06-26 10:28:21

标签: ios bundler gemfile gemfile.lock jazzy

对于使用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次不定更新一切都罚款,即jazzy仍然是版本0.8.2。

我重新编写了一个bundle update,再一次,jazzy从版本0.8.2变为0.0.14。

我在这里缺少什么?为什么我会得到一组具有相同约束条件的不同版本?

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

1 个答案:

答案 0 :(得分:2)

问题是依赖地狱。

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

但是,您可以强制捆绑程序使用版本0.8.2更多的jazzy,添加到您的Gemfile

gem 'jazzy', '>=0.8.2'

而不是

gem 'jazzy'

再次执行bundle update

bundler docs

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