关于CocoaPods之Nexus、JFrog
前言 Hi Coder,我是 CoderStar! 好久没有输出文章了,好多朋友都开始私信或在群里问我是不是后面不继续更新了。😂,其实不是哈,主要是最近这段时间比较忙,确实没有太多的精力往外输出了。 今天给大家总结一下前段时间关于 CocoaPods 的一些工程实践。 包管理器 关于包管理系统,每个语言都会有自己的包管理系统,比如 java 系的 maven、gradle,rust 的 cargo,nodejs 的 npm… 可以说,一个好用的包管理器对一个语言而言是至关重要的,但是说起 iOS 相关语言的包管理器,真是一言难尽,将包完全托管到 Github 上这个方案虽然从节省成本角度而言不乏是个好主意,但是确实也会大幅降低开发者的开发体验,在国内尤甚。 吐槽的话就不说太多了,大家都懂的 关于 iOS 相关语言的包管理器,也有好几种 CocoaPods 使用占比最高,库支持多,但是对项目的侵入性比较强; Carthage 库支持较少,侵入性较弱; SPM 官方支持,虽然现在还不是很好用,但是随着 Swift 的持续推进,SPM 也是会成为未来的趋势; 目前市面上用的最多的还是 CocoaPods,今天我们也主要谈谈该种方式,另外几种方式,我们后面有机会再继续。 大家都知道,CocoaPods 的远程存储是由一个中心索引库 + 离散化的制品库(git 源,OSS 等等)组成的,最开始中心索引库是一个 Github Repo,但随着库的增多,仓库大小也持续增加。后续 CocoaPods 为了解决这部分的问题,将中心索引库迁移到了 CDN,使中心索引库根据依赖的库进行按需下载。 但是这样也只是解决了中心索引库的下载问题,但是对于索引库依赖的制品库却没有丝毫的帮助,对于绝大部分三方库,我们还是需要从 Github 进行下载,那对于这种问题如何解决呢? 市面上也会有一些方案,比如: 利用 Gitee 进行导入。该种方式会受到 Gitee 平台的限制,还需要配套研发对应的工具去做自动化。从公司的角度去考虑,这种受外部平台限制很大的方案一般都很难去落地。 其他各种加快 Github 访问的方案; 那还有没有更好的方案呢?那就是我接下来要介绍的 Nexus 以及 JFrog 。 Nexus&JFrog 制品库都是 Nexus 和 JFrog 的产品之一,除此之外,还会有其他产品。 ...