官方原文地址
CocoaPods不僅僅是一個能為你項目添加開源代碼的非常棒的工具,而且也能實現多項目共享組件。你可以通過私有庫來做到這點。
只需要很少的步驟就能讓你項目配置私有庫;為它們創建一個私有倉庫,讓CocoaPods知道哪里能找到它,添加對應的podspecs到倉庫中。
1. 創建一個私有的倉庫
要用起來你們收集的私有資源庫,我們建議你創建一個自己的私有代碼倉庫。這應該是一個本地的,對于需要使用這些資源庫的人來說是可使用的。
我們不需要復刻CocoaPods的Master倉庫。保證你的團隊中的每個人有權限的倉庫,但是不需要對外公開。
(官方沒有細說這里面的過程,參照Using Pod Lib Create(譯))
2. 添加你的私有庫到你的CocoaPods中
$ pod repo add REPO_NAME SOURCE_URL
注意:如果你打算創建本地pods,你應該推到這個資源地址上
檢查你是否成功安裝
$ cd ~/.cocoapods/repos/REPO_NAME
$ pod repo lint .
3. 添加你的Podspec到你的倉庫
確定你已經給你的代碼資源打上tag和版本,然后運行
$ pod repo push REPO_NAME SPEC_NAME.podspec
這將會運行pod spec lint,注意在你私有庫配置spec時所有的小細節。
你倉庫的結構應該是這樣的
.
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec
就是這樣
你的私有Pod已經可以用于在Podfile里了。你能在你的Podfile中通過資源指令來使用私有庫,比如下面的例子中展示。
一個示例
1. 創建一個私有的倉庫
在你的服務器上創建一個倉庫。可以是在Github上或者是你自己的服務器如下
$ cd /opt/git
$ mkdir Specs.git
$ cd Specs.git
$ git init --bare
(例子的余下部分使用倉庫的是 https://github.com/artsy/Specs)
2. 添加你的私有庫到你的CocoaPods中
使用你服務器上的倉庫的URL,添加你的倉庫使用:
$ pod repo add artsy-specs git@github:artsy/Specs.git
檢查你是否安裝成功使用:
$ cd ~/.cocoapods/repos/artsy-specs
$ pod repo lint .
3. 添加你的Podspec到你的倉庫
創建你的Podspec
cd ~/Desktop
touch Artsy+OSSUIFonts.podspec
Artsy+OSSUIFonts.podspec 應該會在你選擇的文本編輯器里打開. 典型的內容應該是:
Pod::Spec.new do |s|
s.name = "Artsy+OSSUIFonts"
s.version = "1.1.1"
s.summary = "The open source fonts for Artsy apps + UIFont categories."
s.homepage = "https://github.com/artsy/Artsy-OSSUIFonts"
s.license = 'Code is MIT, then custom font licenses.'
s.author = { "Orta" => "orta.therox@gmail.com" }
s.source = { :git => "https://github.com/artsy/Artsy-OSSUIFonts.git", :tag => s.version }
s.social_media_url = 'https://twitter.com/artsy'
s.platform = :ios, '7.0'
s.requires_arc = true
s.source_files = 'Pod/Classes'
s.resources = 'Pod/Assets/*'
s.frameworks = 'UIKit', 'CoreText'
s.module_name = 'Artsy_UIFonts'
end
保存你的Podspec,然后添加到倉庫中
pod repo push artsy-specs ~/Desktop/Artsy+OSSUIFonts.podspec
如果你的Podspec是有效的,它將會被添加到倉庫里。倉庫將會看著像這樣:
.
├── Specs
└── Artsy+OSSUIFonts
└── 1.1.1
└── Artsy+OSSUIFonts.podspec
看這個 Podfile 是一個如何將倉庫URL包含進去的示例。
如何移除私有庫
pod repo remove [name]