CarthageのCartfileの書き方と個別更新方法

CarthageのCartfileの書き方と個別更新方法

Table of Contents

Podfileと書き方が微妙に異なるので注意です。カンマは使いません。

ライブラリを導入したら新しいバージョンが公開されたら追従しなければいけません。 この記事ではCarthageで管理してるライブラリのバージョン追従方法について説明します。

Cartfileでバージョンを指定する

例えばCartfileでは次のようにライブラリのバージョンを指定することができます。

github "SwiftyJSON" ~> 4.2.0
github "Hoge" >= 4.2.0
github "Fuga" == 4.2.0
github "Nuga" "develop"
github "Moga" "ab12c3ef4"

それぞれ順に説明していきます。

~>で範囲指定する

最も多く使われてるであろう書き方です。 例えばバージョン履歴が下記だった場合で説明します。

  • 4.2.0
  • 4.2.1
  • 4.3.0
  • 5.0.0

このときにCartfileでgithub "Hoge" ~> 4.2.0が記入された状態で
updateを実行したら4.2.1までアップデートします。
もしgithub "Hoge" ~> 4.2が記入されてたら4.3.0までアップデートします。

なかなか範囲が覚えにくいと思いますが、最後の数字がxに置き換えて見れば分かりやすくなります。
例えば github "Hoge" ~> 4.2.0であれば4.2.x系です。
4.2なら4.x系です。つまり4系バージョンですね。

>= で指定バージョン以上

指定バージョン値以上のバージョンを指定します。
Cartfileにgithub "Hoge" >= 4.2.1と記入された状態で
バージョン履歴が下記だった場合は、5.0.0がインストールされます。

  • 4.2.0
  • 4.2.1
  • 4.3.0
  • 5.0.0

この書き方は少し破壊変更リスクが伴うため使う側としてはオススメしないです。
こっちよりも前述した範囲指定のほうが安全性をそれなりに維持できます。

== で指定バージョンのみ

もっとも安全なバージョン指定方法です。
Cartfileにgithub "Hoge" == 4.2.1と記入されていたら
他にバージョンが出ていても 4.2.1しかインストールされません。

丁寧にバージョンアップをしたいライブラリや開発運用に適した方法です。

revisionでコミット指定

GitHub上のコミットを名指しでインストールします。コミットで発行されているrevisionを使います。
またrevisionだけでなくブランチ名でも使えます。

使っていたライブラリに不具合や脆弱性、iOS最新版が出たけどライブラリ側がバージョンを切っていない状態など
緊急時で使うことがあるので覚えておいたほうがいいです。

Carthage公式のVersion requirementでも英語ですが説明セクションはあります。

ライブラリの個別更新

更新したいライブラリをCartfileに書いてcarthage updateを実行すると、更新不要なライブラリも更新対象となります。

carthge updateではライブラリ名を渡せばそのライブラリのみを更新してくれます。 SwiftyJSONのみを更新する場合

$ carthage update SwiftyJSON --platform iOS

ビルド済みライブラリのスキップ

先程と同じテーマですが、--cache-buildsオプションを渡すことでビルド済みのライブラリの場合はスキップしてくれます。 この場合は個別でライブラリ名を指定は必要ありません。

$ carthage update --platform iOS --cache-builds

もっと体系的に理解する

この記事では、記事の読みやすいよう導入に絞ってます。 もしチーム運用、git管理、CocoaPodsとの違いなど使い続けたら必要になる部分は別記事に分けており、
Carthageの使い方を体系的に理解する 」からまとめて知ることができます。

このエントリーをはてなブックマークに追加