最近项目需要组件化,公共组件要推到远程仓库。因为涉及组件是否开源问题,以下发布组件方式会区分私有或者公有仓库推送。
#本地库引用方式
pod 'ModuleTest', :path => '../'
#github远程公用库引用方式
pod 'ModuleTest', '0.2.0'
#gitee远程私有库引用方式
pod 'ModuleTest', :tag => '0.1.0',:git => 'https://gitee.com/xxx/ModuleTest.git'
在gitee或者github远端创建一个仓库,仓库名eg:ModuleTest . https://gitee.com/xxx/ModuleTest.git
格式:pod lib create 组件名, eg:
pod lib create ModuleTest
此时,终端会显示一些创建组件的基本问题,
>What is your name?
>这里输入名字,可以随便输
>What is your email?
>这里最好是输入你gitee或者github注册的邮箱
>What platform do you want to use?? [ iOS / macOS ]
>iOS
>What language do you want to use?? [ Swift / ObjC ]
>Swift
>Would you like to include a demo application with your library? [ Yes / No ]
>Yes
>Which testing frameworks will you use? [ Specta / Kiwi / None ]
>None
>Would you like to do view based testing? [ Yes / No ]
>No
找到Classes目录下的ReplaceMe。删除ReplaceMe,放上你的源码文件。这里我是新建ModuleTest.swift文件。
因为我的工程组件是swift语言,下面做了一些小调整:
s.summary = 'ModuleTest summary.'
s.homepage = '填写你的仓储主页'
s.source = 'https://gitee.com/xxx/ModuleTest.git'
s.swift_version = '5.0'
(1)首先验证一些本地组件podspec是否可用
pod lib lint 验证.podspec文件是否可用(避免警告pod lib lint --allow-warnings)
(2)如果你想把组件推送到远程公用仓库,请看以下步骤,否则跳过。
2.1 判断你的电脑是否注册了trunk,如果没有注册,则:
pod trunk register 邮箱 '用户名' --description='电脑描述'
2.2
pod spec lint 验证远程仓库(避免警告pod spec lint --allow-warnings)
2.3 提交.podspec文件到仓库
pod trunk push 组件podspec文件名.podspec (上面加了此处也要加 --allow-warnings)
本地trunk目录
~/.cocoapods/repos/trunk
(3) 如果你想把组件推送到远程私有仓库,请看以下:
格式:pod repo add ‘私有仓库名’ ‘https://gitee.com/xxx/ModuleTest.git’
eg:
pod repo push Common ModuleTest.podspec --allow-warnings
在主工程或者demo工程如果想引用私有库组件,写法:
#这是私有库地址
source 'https://gitee.com/xxxx/xxxx.git'
#这是github开源代码库地址
source 'https://github.com/CocoaPods/Specs.git'
这里为什么写上了自己的私有库地址之后还得加上cocoapods原有的库地址呢?
因为如果加上了自己的资源地址之后,就只会在你添加的资源地址里面去寻找资源,但是我们项目开发中除了使用自己的私有库之外,经常还要使用到GitHub上面的公开库资源,所以要配上Github公开库资源地址。