为什么 Cocoapods 不能像 npm 一样简单,只提供一个文件夹来存放三方库的源码?

有朋友问我,为什么 npm 和 pip 这类包管理工具,实现起来很简单,都是把依赖的代码直接下载下来就行,而 Cocoapods 就这么反人类,要单独建一个 Pods 工程,每个依赖的组件做成 Target,最后还包一层 workspace?

这个问题很有意思,正确的思路是:

  1. 首先思考 Cocoapods 做了什么,提供哪些功能?
  2. 这些功能,如果换成源码形式接入项目中,还能不能实现?
  3. 不能实现的原因是什么,npm 有没有这种问题?
  4. 所以,Cocoapods 这么设计的本质原因是什么?

第一步要求我们对 Cocoapods 有所有了解
第二步则考察我们是否除了会用 Cocoapods,还了解它的实现原理,因为不了解实现原理就不可能知道自己能不能实现。
第三步启发我们去思考,透过表象找本质
第四步就是最终答案了。

top Created with Sketch.