前言
組件化中把模塊拆分之后把模塊的代碼存放在私有庫中,私有庫中存放的其實是模塊也就是我們拆分出來的組件的代碼索引,所以私有庫也就是索引庫儡首。它里面存放的是各個組件的版本(tag)的索引文件podspec。
創(chuàng)建私有庫我們分三步:
- 第一步拆分組件推送到代碼庫偏友,為組件打tag蔬胯;
- 第二步創(chuàng)建該組件的podspec文件推送到私有庫;
- 第三部在本地設置本地庫關聯(lián)遠程私有庫位他,配置項目的podfile引用組件氛濒。
私有庫分為兩種产场,本文先實現(xiàn)第一種:
- 第一種pod下來的組件代碼完全公開,就是在工程里面是可以看到組件代碼實現(xiàn)舞竿。
- 第二種pod下來的組件代碼只能看見頭文件京景,內(nèi)部實現(xiàn)不能查看也就是我們說的靜態(tài)庫方式。
準備
創(chuàng)建私有索引庫推送
創(chuàng)建自己的私有索引庫骗奖,創(chuàng)建過程和項目是一樣的确徙,不懂可以看系列前面的文章
添加私有索引庫到本地
pod repo add MyRepo git@github.com:GuoMs/mySpecs.git
源代碼及tag推送
創(chuàng)建一個模塊測試代碼,組件化代碼最好的情況是創(chuàng)建一個靜態(tài)庫的target工程执桌。今天剛開始講私有庫鄙皇,我們只使用一個控制器輸出一句代碼代替,后續(xù)的文章將帶大家慢慢深入仰挣。
提交代碼伴逸,并打一個1.0.0的tag
podsepc推送
1、創(chuàng)建podspec膘壶,怎么創(chuàng)建請查看前面的文章
#最簡單是示例
Pod::Spec.new do |s|
s.name = "testDemo"
#我們剛打tag的版本是1.0.0 所以這也是
s.version = "1.0.0"
s.summary = "測試."
s.description = <<-DESC
DESC
#項目首頁顯示用不重要
s.homepage = "https://github.com/GuoMs/testDemo"
s.license = "MIT"
s.author = { "dd" => "gz3024@aliyun.com" }
s.platform = :ios, "8.0"
#這里是源代碼错蝴,也就是組件代碼的git地址一定要寫對
s.source = { :git => "git@github.com:GuoMs/testDemo.git", :tag => "#{s.version}" }
#組件代碼的路徑要寫對不然會找不到
s.source_files = "testDemo", "testDemo/**/*.{h,m}"
end
2、驗證podspec是否正確颓芭,如果有出現(xiàn)error的話需要修改
#驗證是否正常顷锰,
pod spec lint --no-clean
改到最后只有waring
通過上面的修改,你可能需要重新提交并重新打tag亡问,我這里重新提交代碼并打tag1.0.1,或者刪除tag重新提交官紫。
#修改提交完之后執(zhí)行
pod lib lint --private
提示以下信息代表成功了
3、推送podspec到私有索引庫
pod repo push MyRepo testDemo.podspec --verbose --allow-warnings --use-libraries
以下代表成功了
#現(xiàn)在可以搜索我們的組件啦
pod search testDemo
#輸出我們剛創(chuàng)建的組件描述
-> testDemo (1.0.1)
測試組件.
pod 'testDemo', '~> 1.0.1'
- Homepage: https://github.com/GuoMs/testDemo
- Source: git@github.com:GuoMs/testDemo.git
- Versions: 1.0.1 [MyRepo repo]
在遠端的私有庫中我們也可以看到1.0.1的索引文件
實際項目使用
1玛界、設置本地的podfile
#設置私有庫源
source 'git@github.com:GuoMs/mySpecs.git'
platform :ios, '8.0'
target 'repoDemo' do
#組件名稱
pod 'testDemo'
end
2.pod 更新
3万矾、完成之后我們可以看到組件的代碼
4悼吱、最后調用組件代碼
#import "ViewController.h"
#import <testDemo/testDemo.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
testDemo *test = [[testDemo alloc]init];
[self.navigationController pushViewController:test animated:YES];
}
@end
輸出log
調試模式
修改podfile
#設置私有庫源
source 'git@github.com:GuoMs/mySpecs.git'
platform :ios, '8.0'
target 'repoDemo' do
#設置調試模式慎框,后面的路徑指的是testDemo.podsepc的所在路徑
pod 'testDemo', :path=> '/Users/mac/Desktop/testtest'
end
pod更新之后在工程的Development Pods文件夾下看到代碼就可以直接修改代碼了,改文件夾代碼所有調試模式的第三方庫或者組件代碼
后記
上面只是寫了最簡單的發(fā)布步驟后添,其實真正開發(fā)的時候很有很多的配置信息需要寫在podsepc里面笨枯,代碼也必須公開所有人可見,下篇我們將把代碼打包成靜態(tài)庫發(fā)布到私有索引庫遇西,敬請期待馅精。