一.前言
- 隨著公司項(xiàng)目的不斷迭代,業(yè)務(wù)的天馬行空。工程的代碼量和業(yè)務(wù)邏輯也越來(lái)越復(fù)雜蝇棉,原始的開(kāi)發(fā)模式和架構(gòu)已經(jīng)無(wú)法滿足我們的業(yè)務(wù)發(fā)展速度,想分離出一個(gè)模塊更是困難芥永。直到組件化的誕生篡殷,這也是我們?yōu)槭裁匆獡肀ЫM件化的原因。
不得不說(shuō)組件化帶來(lái)的優(yōu)點(diǎn)還有有目共睹的:
場(chǎng)景 如:- 聰明的產(chǎn)品張三有一天說(shuō):我們的IM業(yè)務(wù)日活埋涧、留存數(shù)據(jù)非常好板辽,所以我們想單獨(dú)拆出這個(gè)業(yè)務(wù)做個(gè)馬甲包。
- 大廠~項(xiàng)目管理說(shuō)我們的項(xiàng)目是否做業(yè)務(wù)之間隔離了沒(méi)有飞袋。
- 隨著業(yè)務(wù)不斷增加戳气,編譯速度和打包速度越來(lái)越慢链患。
- 大廠~多個(gè)業(yè)務(wù)多人同時(shí)開(kāi)發(fā)巧鸭,等等。
- 哈哈麻捻!以上都是題外話纲仍,下面開(kāi)始正文。
組件化分類:
共有庫(kù) - 所有人都能使用贸毕。()郑叠。
私有庫(kù) - 公司內(nèi)部擁有特殊權(quán)限才能使用。
framework - 公私都有明棍,動(dòng)態(tài)庫(kù)靜態(tài)庫(kù)乡革。只能看到.h文件。
二.步驟
準(zhǔn)備工作:
Github賬號(hào)一個(gè)(上傳組件工程用的)
安裝CocoaPods(創(chuàng)建并驗(yàn)證pod用的)
安裝Git 命令行 (首次上傳組件工程用的)
安裝Github Desktop或者SourceTree(后續(xù)更新組件用的摊腋,Git命令使用熟練者忽略此項(xiàng))
1.創(chuàng)建共有庫(kù)
-
首先在Github創(chuàng)建一個(gè)新的Repository沸版。(你的Pods最終是要托管在Github平臺(tái)上的,所以先在Github上創(chuàng)建一個(gè)空的Repository兴蒸。)
如:JHIMComponets = IM組件化模塊橙凳,這個(gè)看個(gè)人不強(qiáng)制蕾殴。
repository.png -
下圖為創(chuàng)建成功后的樣子
JHIMComponets.png
2.注冊(cè)Cocoapods賬戶
- 想要?jiǎng)?chuàng)建一個(gè)開(kāi)源pod庫(kù), 首先我們需要注冊(cè)CocoaPods,基于Cocoapods已經(jīng)安裝好的前提下岛啸,這里是使用trunk 方式钓觉,只需要在終端執(zhí)行:
pod trunk register 郵箱地址 '用戶名' --verbose
如: pod trunk register xxxxxx@yeah.com 'JadeXH' --verbose
一般會(huì)使用GitHub郵箱和用戶名,當(dāng)然這個(gè)可以自由選擇坚踩,注冊(cè)之后荡灾,在郵箱中會(huì)收到確認(rèn)郵件,在瀏覽器中點(diǎn)擊鏈接確認(rèn)即注冊(cè)成功(小編遇到點(diǎn)擊鏈接地址后顯示:Internal server error 提示,不用理他直接驗(yàn)證)卧晓。成功之后可以終端執(zhí)行:
pod trunk me //驗(yàn)證是否注冊(cè)成功
查看注冊(cè)信息芬首,以后可以使用該開(kāi)源Pod庫(kù)發(fā)布工具,也可以通過(guò)此方式查看已經(jīng)發(fā)布過(guò)的pods:
yourname@Jade-for-MacBook-Pro podTest % pod trunk me
- Name: yourname
- Email: yourname@yeah.net
- Since: March 28th, 02:32
- Pods: None
- Sessions:
- March 28th, 02:32 - August 4th, 04:13. IP: 124.126.200.29
3.在本地創(chuàng)建pod庫(kù)
- 利用pod命令創(chuàng)建了名為JHIMComponets的Pod庫(kù)
cd yourname@Jade-for-MacBook-Pro downloads %
# cd到downloads目錄下載逼裆,這個(gè)不強(qiáng)制請(qǐng)隨意郁稍。
yourname@Jade-for-MacBook-Pro downloads % pod lib create JHIMComponets
# 執(zhí)行 pod lib create JHIMComponets
-
執(zhí)行完上述命令之后,會(huì)問(wèn)你幾個(gè)問(wèn)題胜宇,按需求填寫(xiě)即可
pod create.png
# 你想使用哪個(gè)平臺(tái)耀怜?
1、What platform do you want to use?? [ iOS / macOS ]
iOS
# 庫(kù)語(yǔ)言選擇桐愉?
2财破、What language do you want to use?? [ Swift / ObjC ]
ObjC
# 是否需要一個(gè)demo工程,用于調(diào)試Pod从诲?
3左痢、Would you like include a demo application with your library? [ Yes / No ]
Yes
# 你要使用哪個(gè)測(cè)試框架?
4系洛、Which testing frameworks will you use? [ Specta / Kiwi / None ]
None
# 是否要UI測(cè)試俊性?
5、Would you like to do view based testing? [ Yes / No ]
NO
# 類名前綴描扯?
6定页、What is your class prefix?
JH
-
到這里pod庫(kù)就創(chuàng)建完成了,它會(huì)自己打開(kāi)剛才創(chuàng)建的pod庫(kù)绽诚。
目錄結(jié)構(gòu)如下圖:
pod.png - (1)配置podspec
配置詳解:
Pod::Spec.new do |s|
#庫(kù)名稱
s.name = 'JHIMComponets'
#版本號(hào)
s.version = '0.1.0'
#庫(kù)簡(jiǎn)短介紹
s.summary = 'A short description of JHIMComponets.'
#開(kāi)源庫(kù)描述
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
#開(kāi)源庫(kù)地址典徊,或者是博客、社交地址等
s.homepage = 'https://github.com/JadeXH/JHIMComponets'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
#開(kāi)源協(xié)議
s.license = { :type => 'MIT', :file => 'LICENSE' }
#開(kāi)源庫(kù)作者
s.author = { 'yourname' => 'yourname@yeah.net' }
#源庫(kù)資源文件
s.source = { :git => 'https://github.com/JadeXH/JHIMComponets.git', :tag => s.version.to_s }
#社交網(wǎng)址
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
#開(kāi)源庫(kù)最低支持
s.ios.deployment_target = '9.0'
#源庫(kù)資源文件
s.source_files = 'JHIMComponets/Classes/**/*'
#添加資源文件
# s.resource_bundles = {
# 'JHIMComponets' => ['JHIMComponets/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
#依賴的系統(tǒng)庫(kù) 多個(gè)用逗號(hào)隔開(kāi)
# s.frameworks = 'UIKit', 'MapKit'
#引入第三方依賴庫(kù)
# s.dependency 'AFNetworking', '~> 2.3'
end
-
需要注意如圖:
podspec.png -
Readme主要是介紹這個(gè)組件的用途和使用的恩够,可以隨時(shí)編輯卒落。目前就確認(rèn)一下自己的名字和郵箱就可以了。
readme.png -
協(xié)議文件玫鸟,也是確認(rèn)一下自己的名字和郵箱就可以了导绷。
licence.png - (2)添加自己的類
打開(kāi)pod庫(kù)目錄:
new.png
刪除ReplaceMe -> 創(chuàng)建JHIMComponet簡(jiǎn)單類,聲明一個(gè)打印函數(shù)屎飘,方便后續(xù)測(cè)試妥曲。
![]()
#import "JHIMComponet.h"
@implementation JHIMComponet
- (void)printJHIMComponet {
NSLog(@"printJHIMComponet*****");
}
@end
- 這時(shí)cd進(jìn)入Example路徑下執(zhí)行pod install命令,看看是否能將剛剛添加的庫(kù)文件引入到工程中
yourname@Jade-for-MacBook-Pro downloads % cd /Users/yourname/Downloads/JHIMComponets/Example
yourname@Jade-for-MacBook-Pro Example % pod install
如果成功會(huì)在項(xiàng)目組Pods中看到钦购。
4.項(xiàng)目上傳與發(fā)布
cd到你的項(xiàng)目路徑下檐盟,將項(xiàng)目上傳到Github中(即剛剛創(chuàng)建的JHIMComponets共有庫(kù)中)依次使用下列命令行,不要遺漏押桃。
//
yourname@Jade-for-MacBook-Pro Example % cd /Users/yourname/Downloads/JHIMComponets
# 添加github項(xiàng)目路徑
yourname@Jade-for-MacBook-Pro JHIMComponets % git remote add origin https://github.com/JadeXH/JHIMComponets.git
# 添加文件
yourname@Jade-for-MacBook-Pro JHIMComponets % git add .
# 將暫存區(qū)里的改動(dòng)給提交到本地的版本庫(kù)
yourname@Jade-for-MacBook-Pro JHIMComponets % git commit -m "first commit"
# 創(chuàng)建分支main
yourname@Jade-for-MacBook-Pro JHIMComponets % git branch -M main
# 提交版本號(hào)并push到main分支
yourname@Jade-for-MacBook-Pro JHIMComponets % git push -u origin main
#注意這里的版本號(hào)要與.podspec中的版本號(hào)保持一致
yourname@Jade-for-MacBook-Pro JHIMComponets % git tag 0.1.0
yourname@Jade-for-MacBook-Pro JHIMComponets % git push origin 0.1.0
在執(zhí)行g(shù)it push -u origin main的時(shí)候如果遇到需要輸入用戶名和密碼:
Username for 'https://github.com': JadeXH
Password for 'https://JadeXH@github.com':
這個(gè)密碼不是你Github的登錄密碼葵萎,而是需要生成一個(gè)access tokens。
生成token步驟:需要在Github個(gè)人設(shè)置頁(yè) -> Settings -> Developer settings -> Personal access tokens 中創(chuàng)建一個(gè)token。
settings.png
1.設(shè)置token的有效期羡忘,訪問(wèn)權(quán)限等
2.選擇要授予此令牌token的范圍或權(quán)限谎痢。
3.要使用token從命令行訪問(wèn)倉(cāng)庫(kù),請(qǐng)選擇repo卷雕。
4.要使用token從命令行刪除倉(cāng)庫(kù)节猿,請(qǐng)選擇delete_repo
5.其他根據(jù)需要進(jìn)行勾選
token.png
delete.png
點(diǎn)擊Generate token生成的token(ghp_zR7Zm44QK*************Ui7zikChgv2bxMNZ)。
注意:
記得把你的token保存下來(lái)漫雕,因?yàn)槟阍俅嗡⑿戮W(wǎng)頁(yè)的時(shí)候滨嘱,你已經(jīng)沒(méi)有辦法看到它了。然后把這個(gè)token直接粘貼到命令行提示輸入密碼處就ok了浸间。
執(zhí)行完所有g(shù)it命令行后打開(kāi)瀏覽器輸入https://github.com/JadeXH/JHIMComponets就看到你的pod庫(kù)已經(jīng)push上去了太雨。
5.使用與驗(yàn)證
- 新建個(gè)帶pod的項(xiàng)目,把我們做好的JHIMComponets加入podfile文件魁蒜。
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'podTest' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for podTest
pod 'JHIMComponets',:git =>"https://github.com/JadeXH/JHIMComponets.git"
target 'podTestTests' do
inherit! :search_paths
# Pods for testing
end
target 'podTestUITests' do
inherit! :search_paths
# Pods for testing
end
end
- 執(zhí)行pod install
yourname@Jade-for-MacBook-Pro podTest % pod install
Analyzing dependencies
Pre-downloading: `JHIMComponets` from `https://github.com/JadeXH/JHIMComponets.git`
Downloading dependencies
Installing JHIMComponets (0.1.0)
Removing JHComponents
Generating Pods project
Integrating client project
Pod installation complete! There are 9 dependencies from the Podfile and 9 total pods installed.
-
引入頭文件并打印結(jié)果
import.png
6.版本更新與維護(hù)
- 現(xiàn)在的JHIMComponets庫(kù)已經(jīng)在Github上托管了囊扳,以后維護(hù)這個(gè)項(xiàng)目就可以了(開(kāi)始本地創(chuàng)建的JHIMComponets項(xiàng)目就可以刪除了),管理Github倉(cāng)庫(kù)梅惯,
:
- 可以使用命令行 git clone https://github.com/JadeXH/JHIMComponets
也可以使用Github Desktop
下載Github Desktop登錄你的用戶名密碼宪拥,F(xiàn)ile ->Clone Repository
Github Desktop.png
其實(shí)Github Desktop更加可視化一些仿野,上面History就是剛才git命令行的記錄铣减。
desk.png
6.總結(jié)
- 終于寫(xiě)完了,哇哦脚作!凌晨了葫哗。寫(xiě)這篇文章初心也是為了加深印象,如果碰巧也能幫到您還請(qǐng)點(diǎn)個(gè)贊球涛,制作不易劣针。