理解CocoaPods的Pod Lib Create
前言
在我们想要发布自己的pod文件时,需要通过Pod Lib Create
指令去创建pod,然后添加文件,测试后发布.
这次我们来探究下Pod Lib Create
到底是如何实现的,该指令帮我们做了什么呢?
pod lib create
通过pod lib create
创建一个pod,分析创建流程
当执行pod lib create ProjectName
时,其实是下载了一个pod模板,然后在内部通过更改.podspec文件的配置定制化自己的pod,
pod lib create ProjectName
其实使用了默认参数,补全的话pod lib create ProjectName --template-url=https://github.com/CocoaPods/pod-template.git
,
执行:
分析
-
Cloning
https://github.com/CocoaPods/pod-template.git
intoProjectName.
创建一个和指定的项目名相同的文件夹,然后将pod-template克隆下拉 -
Configuring TemplateDemo template
对当前项目进行配置
pod-template是cocoapods官方提供的一个模板,做了什么呢
pod-template
看一下文件路径
pod-template
Configuring TemplateDemo template做了什么呢?
先找当前路径下configure
文件,文件夹内容
#!/usr/bin/env ruby
$current_dir = File.dirname(File.expand_path(__FILE__))
Dir[File.join($current_dir, "setup/*.rb")].each do |file|
require_relative(file)
end
pod_name = ARGV.shift
Pod::TemplateConfigurator.new(pod_name).run
根据上述命令:
可得知,遍历并通过require_relative(file)
获得访问在setup文件夹下寻找以.rb
为后缀名的文件的权限,
然后Pod::TemplateConfigurator.new(pod_name).run
运行TemplateConfigurator
文件的内容
看一下setup下面有什么?
在
TemplateConfigurator
文件内,配置了在终端的显示样式,并通过
@message_bank = MessageBank.new(self)
@message_bank.show_prompt
@message_bank.show_prompt
等方法,引用MessageBank
内的命令,具体不再赘述,感兴趣的可以到ruby
文件去查看.
延伸
我们可以定义自己的模板,仿照pod-template
,配置configure
文件,但是相应的参数可以在内部之间定义好,就不需要每次pod lib create
时填写各种参数.
执行结果
文件夹目录结构如下
MyLib
├── .travis.yml
├── _Pods.xcproject
├── Example
│ ├── MyLib
│ ├── MyLib.xcodeproj
│ ├── MyLib.xcworkspace
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ └── Tests
├── LICENSE
├── MyLib.podspec
├── Pod
│ ├── Assets
│ └── Classes
│ └── RemoveMe.[swift/m]
└── README.md
-
Pod
用来存放添加的类 -
RemoveMe
示例类,可以直接删除
注意: 基于自定义pods的实现细节,在向Pod/Classes
或者Pod/Assets
文件增加类或者更新podspec
文件时,需要运行pod install
或者pod update
发布私有库
之前的开发和测试就绪后,就要准备发布了.
-
pod lib lint
或pod spec lint
:首先要检测Podspec
的正确性
pod lib lint
不会连接网络,而是检查文件格式
pod spec lint
会读取线上的repo
并检查相应的tag
-
pod repo push SPEC_REPO *.podspec --verbose
发布po