項目組件化连茧,顧名思義核蘸,就是將項目中的各個模塊按照基礎組建,功能組件啸驯,業(yè)務組件劃分成一個個單獨的模塊客扎,以使得各個模塊間可以單獨開發(fā)、測試罚斗、組合運行徙鱼。
一般公司在天使輪后產(chǎn)品閉環(huán)已經(jīng)確定,就需要實施組件化來應對A輪之后的業(yè)務擴張针姿。
但也不是非得等到這一步才開始袱吆,如果在項目初期實施組件化,雖然代碼量會有所增加距淫,但是要把一個小項目組件化的難度也會小很多绞绒。
私有索引庫
私有索引庫的作用是存放.podSpec文件的。當你使用pod search AFN
時榕暇,pod會在本地的索引庫中進行搜索蓬衡。
私有索引庫分為本地私有索引庫和遠程私有索引庫,它們是相互對應的彤枢。
-
本地私有索引庫
可以發(fā)現(xiàn)只有一個master,這個是CocoaPods的本地索引庫狰晚,但它不是私有的,只要安裝過CocoaPods的電腦堂污,都會有這么一個索引庫。它對應CocoaPods的遠程索引庫龄砰。
由于它不是私有的盟猖,所以我們需要自己創(chuàng)建一個私有索引庫讨衣。目前GitHub的私有代碼倉庫是需要money的,我們可以選擇碼云式镐、碼市等具有可以免費創(chuàng)建私有代碼倉庫的代碼托管平臺反镇。操作和GitHub是一樣的。就拿碼市做例子娘汞。
- 遠程私有索引庫
1.創(chuàng)建遠程私有索引庫歹茶。
2.復制遠程索引庫地址。
3.打開終端你弦,將遠程私有庫關聯(lián)到本地惊豺。
cd /Users/yufu/.cocoapods/repos
pod repo add LTSpec https://git.coding.net/lt1061961387/LTSpec.git
4.可以發(fā)現(xiàn)在Finder中多了一個LTSpec。這里就是我們用來存放組件的.podSpec文件的禽作。
私有代碼倉庫
代碼倉庫也分公私有尸昧,因為是公司的項目,不想暴露給別人旷偿,所以也需要建立私有代碼倉庫烹俗。
私有索引庫也屬于私有代碼倉庫,只是從功能上分開萍程。一個是用來存放代碼的幢妄,一個是用來存放.podSpec文件的。
私有代碼倉庫也分為本地私有代碼庫和遠程私有代碼庫茫负,它們也是相互對應的蕉鸳。
-
本地私有代碼庫
1.在我們的主工程的同級目錄下,創(chuàng)建我們的組件工程朽褪,比如我的主工程在我的桌面的LTMainProject
目錄下置吓,我想抽取主工程里的網(wǎng)絡通信模塊。使用CocoaPods的模板在終端輸入:
cd /Users/yufu/Desktop/LTMainProject
pod lib create LTNetworking
2.將自己抽取出的組件拷貝到創(chuàng)建的模板工程中
-
遠程私有代碼倉庫
1.創(chuàng)建遠程私有代碼倉庫
2.修改組件的.podSpec文件
3.提交本地私有模板組件代碼到遠程私有代碼倉庫缔赠,并打上tag
標簽
cd /Users/yufu/Desktop/LTMainProject/LTNetworking
git add .
git commit -m '創(chuàng)建網(wǎng)絡通信組件'
git tag '0.1.0'
git remote add origin git@git.coding.net:lt1061961387/LTNetworking.git
git push -u origin master
git push --tag
4.對文件進行本地驗證和遠程驗證
cd /Users/yufu/Desktop/LTMainProject/LTNetworking
pod lib lint --private
pod spec lint --private
5.將驗證通過的.podSpec文件加入到本地私有索引庫衍锚,并上傳到遠程私有索引庫
pod repo push LTSpec LTNetworking.podspec
6.在LTSpec路徑下就會出現(xiàn)LTNetworking
7.查看遠程私有索引庫
8.使用終端查看自己的私有組件
pod search LTNetworking
現(xiàn)在就可以使用pod安裝自己的私有組件了。
安裝私有組件
打開終端一頓操作猛如虎
cd /Users/yufu/Desktop/LTMainProject/LTMainProject
pod init
vim Podfile
添加source ‘https://git.coding.net/lt1061961387/LTSpec.git’
添加pod 'LTNetworking'
后退出
pod install
打開主工程發(fā)現(xiàn)組件已經(jīng)乖乖躺在Pod里了
集成完成嗤堰。