使用 CocoaPods 对公有库开源和私有库组件(下)

简介: 使用 CocoaPods 对公有库开源和私有库组件(下)

5.发布自己的库描述文件podspec给cocoapods


同样在这个文件夹下, 终端执行: 忽视警告:--allow-warnings


pod trunk push CollectionIndexToolsLib.podspec


将你的库文件.podspec文件提交到公有的specs上面, 这一步做的操作是验证你的podspec文件是否合法+提交到specs中(等同于fork;commit;push)+将上传的podspec文件转成json格式文件),成功后会出现Congrats信息。


image.png


成功上传后等待片刻就可以用查找命令找到你的库:

pod search CollectionIndexToolsLib



image.png


6.日后维护更新开源库


如果有错误或者需要迭代版本,修改工程文件后推送到远端仓库后, 需要修改podspec中的版本号, 并重新打tag上传, 再进行新一轮的验证和发布. 如果在开发过程中发现某基础组件存在 bug 需要更新 Pod,具体操作步骤如下:


  • 修改 podspec 文件中的 s.version;
  • 修复 bug 并对项目打 tag,tag 名称和 s.version 一直并 push 到远程仓库。
  • 验证 podspec 文件的有效性;
  • 推送 podspec 文件到远程仓库;
  • 执行 pod search RRCache 验证结果;


实用:组件化私有库



组件化的实用之处请参考《移动端 iOS 年终工作总结-纯干货请自备酒水》(juejin.cn/post/684490…


私有Pod库和公有Pod库的创建方式没有什么区别, 不一样的是管理他们的 spec repo 不一样.


所以我们需要自己创建一个跟CocoaPods/Specs类似的仓库来管理内部创建的Pod库的podspec文件, 供内部人员更新和依赖使用内部Pod组件库.


私有repo的构建形式有两种, 一种是私有git服务器上面创建,一种是本机创建.


本机创建请参考官方文档:Private Pods,


这里介绍的是在公司内部搭建的git服务器上面创建整个服务的方式.


1.创建一个git仓库用来做内部私有库的Spec Repo


在私有服务器一个仓库,一个用来存放所有共享库的podspec, 这里创建好之后的内部SSH协议地址是:gitee.com/WhatsXie/Li…, 花钱买git的私有仓库或者使用其他免费的第三方git服务(如Bitbucket等)创建的私有仓库给到的http/https地址也一样.终端输入命令:


pod repo add LibComponent https://gitee.com/WhatsXie/LibComponent.git


将LibComponent添加到本地repo, 添加成功后可以在/.cocoapods/repos/目录下可以看到官方的specs:master和刚刚加入的specs:LibComponent


如果有其他合作人员共同使用这个私有Spec Repo的话在他有对应Git仓库的权限的前提下执行相同的命令添加这个Spec Repo即可.


2.创建私有Pod组件库


继续创建一个私有仓库,用来建立需要共享的内部组件, 以RSGuidePageLib为例:gitee.com/WhatsXie/RS… 可以创建示例工程, 像创建公有的库一样, 填写自己的podspec文件


Pod::Spec.new do |s|
s.name = 'RSGuidePageLib'
s.version = '0.3.0'
s.summary = 'Custom guide page package'
s.description = <<-DESC
Swift implementation of the guide page package, support for multiple pictures and video guide page
DESC
s.homepage = 'https://gitee.com/WhatsXie/RSGuidePageLib.git'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'ReverseScale@icloud.com' => 'reversescale' }
s.source = { :git => 'https://gitee.com/WhatsXie/RSGuidePageLib.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.swift_version = '3.2'
s.source_files = 'RSGuidePageLib/Classes/**/*'
s.requires_arc = true


值得注意的是:podspec文件中的homepage和source不支持ssh协议地址,所以我们得放入http/https地址.


与公有库的创建方式一样, pod lib lint Category.podspec验证成功之后push到仓库, 然后打tag发布release版本.


3.然后将podspec加入私有Sepc repo中


公有库使用trunk方式将.podspec文件发布到CocoaPods/Specs, 内部的pod组件库则是添加到我们第一步创建的私有Spec repo中去, 在终端执行: --allow-warnings 忽略警告 --private 私有库


pod repo push LibComponent RSGuidePageLib.podspec


添加成功之后LibComponent中会包含RSGuidePageLib库的podspec信息, 可以前往~/.cocoapods/repos下的LibComponent文件夹中查看, 同时git服务器中的远端也更新了.


移除私有Repo


pod repo remove [name]


4.查找和使用内部组件库


执行pod search Category就能查到刚刚创建好的Category库了, 然后在想要使用此组件的工程的Podfile中加入pod 'Category', '~>1.0.1'即可使用内部组件啦!


值得注意的是:必须在Podfile前面需要添加你的私有Spec repo的git地址source, pod install时, 才能在私有repo中查找到私有库, 像这样:


# Uncomment the next line to define a global platform for your project
source 'https://github.com/CocoaPods/Specs.git'
source 'https://gitee.com/WhatsXie/LibComponent.git'
# platform :ios, '9.0'
target 'Demo' do
pod 'RSGuidePageLib', '~>0.3.0’
end


经过测试, 这种方式可以把你的所有可以拆分出来的组件, 甚至是业务都来使用Pod管理, 这样达到了解耦和单项更新优化。 某些组件不影响老版本的依赖使用, 出现问题修改Podfile中的依赖版本即可随时回滚, 给开发了带来极大的便利。


参考链接:


目录
相关文章
|
缓存 资源调度 运维
从零到一搭建私有NPM服务器
从零到一搭建私有NPM服务器
1666 0
从零到一搭建私有NPM服务器
|
安全 NoSQL 关系型数据库
使用cnpm搭建企业内部私有NPM仓库
cnpm是企业内部搭建npm镜像和私有npm仓库的开源方案。它同时解决了现有npm架构的一些问题。
942 0
使用cnpm搭建企业内部私有NPM仓库
|
2月前
|
前端开发 JavaScript 开发工具
从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南
从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南
273 0
|
2月前
|
资源调度 前端开发 安全
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
88 0
使用Sinopia部署私有npm仓库
使用Sinopia部署私有npm仓库
141 0
|
开发工具 git 索引
CocoaPods私有库搭建
如何创建一个私有的Spec Repo和Pod
191 0
|
Linux 网络安全 开发工具
通过nexus3部署公司内部的私有npm仓库:从安装到配置、从发布包到测试包的一条龙服务
登录时使用默认用户admin,密码不知道就需要找默认的,点击Sign in时会提示你路径,这里我是这样查的,在linux服务器上输入以下命令
2426 0
|
运维 供应链 前端开发
化繁为简,如何快速实现企业级私有 npm 包依赖管理服务?
化繁为简,如何快速实现企业级私有 npm 包依赖管理服务?
135 0
|
PHP 开发工具 git
如何将自己的扩展发布到Composer包仓库?具体步骤是怎样的?底层原理是什么?
如何将自己的扩展发布到Composer包仓库?具体步骤是怎样的?底层原理是什么?
275 0
|
Swift iOS开发
iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人
iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人
293 0
iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人