组件化开发 ——— 制作私有库
上篇文章大致说了组件化优缺点及内容,现在就针对公共基础组件制作私有库的问题继续搞起来。
我们的原则是:将一个项目组件化拆分掉,一般会拆分一些基础组件、一些功能组件和业务组件。将拆分好的组件放到远程仓库,统一通过Cocoapods进行管理。
我们先来了解一些概念:
如上图所示: 远程索引库、本地索引库、远程代码库、本地代码库。项目先通过拆分demo 中的category的基础组件来说这四个概念。
一、远程索引库
什么是远程索引库?
每创建一个组件都会带有一个 xxx.podspec 的索引文件。专门用来存放这些索引文件的库就叫做索引库。我们需要将这些索引文件上传到远程索引库才能保证其他的同事能够拿来用
创建远程索引库( 注:在自己公司的项目创建private的私有索引库, 要是有组件想开源,在github上创建public的索引库即可,私有索引的步骤和pubic的操作方式一样)
远程索引库已经创建成功,可以看到远程索引库的地址,
二. 本地索引库 (本地索引库就是用来存放本地索引文件的库)
1.打开终端 pod repo 查看一下当前有哪些本地索引库(如果你之前没有创建过,应该只有一个master)
2.通过pod repo add <本地索引库的名字> <远程索引库的地址> ,创建本地索引库并和远程索引库做关联(注:本地索引库的名字建议和远程索引库起的名字一样)
3.通过前往文件夹 "/用户/climbwang/.cocoapods "可以查看本地索引库的物理地址:
三、远程代码库 (代码实际存放的远程仓库)
创建远程代码仓库(和创建远程索引库的方式一样),创建一个WMCategoryKit的远程代码库,用来存放WMCategory组件的代码。同样获取到WMCategoryKit组件的远程代码库地址。
四、本地代码库
创建WMCategoryKit组件本地代码库
1.cd到你想存代码的路径, pod lib create <组件名> , 来创建本地代码组件模版库,根据需要做选择:
2.在组件WMCategoryKit的classes路径下放入你想做为组件的代码
3.接着cd到Example下进行pod install (把刚才拖入到classes里的文件夹pod进来)
4.pod成功后,编译组件看是否报错,编译通过后需要修改podspecs索引文件,一般需要修改下面几个问题:
这块要注意的就是,组件库有没有子文件夹的问题:
```
没有子文件夹的话,所有类都是只在WMCategoryKit下面,在source_files路径填就可以。
有子文件夹的话,需要注释source_files,然后如图,在s.subspec里 填写子目录层级内容。
```
5.编译运行通过后,提交组件到远程代码库并打tag:
```
- git add .
- git commit -m “xxx"
- git remote add origin 远程代码仓库地址
- git push origin master
- git tag 版本号 (注:这里的版本号必须和podspec里写的版本号一致)
- git push --tags
```
6.通过pod spec lint (或pod spec lint --verbose --allow-warnings) 命令验证podspec索引文件
7.验证通过后,pod repo push <本地索引库> <索引文件名>
```
pod repo push WMSpecs WMCategoryKit.podspec
```
去本地查看:

8.然后在需要用到的项目里,修改podfile,把WMCategoryKit组件pod进来(注:需要在Podfile中指定组件远程索引库地址,如果不指定默认会从master的索引库查找就会报找不到组件)
然后 pod install 成功后查看项目:
到这里,组件制作私有库并上传到gitlab,完成所有项目都可以pod此组件的功能。