“闪店菜单”组件化系列(一)

标签:「组件化」「Swift」
作者: vitoPang
审校: IGShare团队

使用Trunk上传Cocopods
Demo参考

初衷

  • 完成团队KPI
  • 自己的笔记整理,为后面自己的组件化铺路(这篇会作为之后我的" 我的swift项目组件化之路"的开篇)
  • 分享给想要自制组件的iOS开发初学者,不必在基础工具使用上浪费时间,可以把主要精力放在自己的组件架构上

概述

至于什么是Cocopods这里就不介绍了,请坐传送门自行去了解,我门要介绍的是,怎么把你想要提供给广大iOS coder的服务(比如你封装的一些实用组件)放到Cocopods上面去,好让他们方便的集成到自己的项目中去

用流程图表示如下:(图片来自CocoaPod官方blog)

流程图

主要来说有以下4个步骤:

  • 把你的项目上传到github
  • 注册trunk
  • 配置PodSpec
  • 推送pod spec文件

一、上传项目代码

1、push项目源代码,cd到本地源代码的根目录,执行:

git add -A

git commit -m "Initial commit"

git push origin master

2、给你的源码打上tag,这是必要的,cocopods需要做的你的tag:

git tag '1.0.0'

git push --tags

二、注册trunk

trunk需要pod在0.33及以上版本,如果你不满足要求,打开Terminal使用ruby的gem命令更新pod:

sudo gem install cocoapods

更新结束后,我们开始注册trunk:

pod trunk register [email protected] '123456' --verbose

邮箱以及用户名请对号入座。用户名我使用的是Github上的用户名。--verbose参数是为了便于输出注册过程中的调试信息。执行上面的语句后,你的邮箱将会受到一封带有验证链接的邮件,如果没有请去垃圾箱找找,有可能被屏蔽了。点击邮件的链接就完成了trunk注册流程。使用下面的命令可以向trunk服务器查询自己的注册信息:

pod trunk me

三、配置PodSpec

这一步与更换trunk方式前的操作完全一样。什么是podspec描述文件呢?简单地讲就是让CocoaPods搜索引擎知道你的代码的作者、版本号、源代码地址、依赖库等信息的文件。任何支持CocoaPods的开源代码都必须有podspec文件。CocoaPods在github中用一个repo来管理所有支持CocoaPods的开源代码:https://github.com/CocoaPods/Specs。

那如何编写podspec文件呢?官方提供了一个模板并附有非常详细的注释说明。

建议直接拿一些成熟的开源库的podspec改就行,生成的模板里有很多冗余的属性。你也可以参考我门 Demo 中的 VTToastToolKit.podspec 文件

这里要注意一点,有时你写的podspec文件在后面push的时候会提示The source_files pattern did not match any file.错误,但是能用pod lib lint命令做本地校验时又是OK的。为什么呢?上述错误的意思是pod在网络上根据你指定的路径找不到相关文件。这时候你要核对网上git仓库的路径与source_files(其他_files字段同理)要对应。*_files字段指的是网络git上的路径

四、 通过trunk推送pod spec文件

现在我们开始通过trunk上传你的podspec文件。先cd到podspec文件所在目录,执行:

pod trunk push VTToastToolKit.podspec

文件名自行对号入座。上面的代码做了三件事:(可以对着文章开头的流程图看)

  1. 验证你的podspec文件是否合法。在trunk方式之前我们一般用“pod lib lint”命令进行验证。

  2. 上传podspec文件到trunk服务器(其实最终也会自动添加到https://github.com/CocoaPods/Specs中)

  3. 将你上传的podspec文件转成json格式文件

执行上面的push操作,就相当于你把你的源代码提交给CocoaPods团队审核了。

注意:更新本地pod依赖

在trunk push后,先用"pod search"查找一下你的代码,有结果的话就没事;没有的话执行"pod setup"进行本地依赖库更新,再search。


podspec文件更新方法

有时你可能会遇到这种情况:执行pod trunk push操作后发现podspec文件的某个地方写错了,想更新一下。对于这种情况,我们可能会先尝试着在把podspec文件push一次。但是如果你的代码版本号没变(podspec里的version自然也没变)就会提示push失败,即使你更改了podspec的其他地方,pod也会认为这两个文件是同一个。 我目前为止找不到trunk的相关update接口,所以只能顺水推舟,更新源代码版本号(如:1.1.1->1.1.2),重新push version tag,然后再执行pod trunk push操作。

你可能感兴趣的:(“闪店菜单”组件化系列(一))