这个项目只提供一个可行性的方法,并将其实现出来。它可能不够简洁优雅,但是我仍希望它可以帮到你。
使用 Ruby 脚本和模板项目快速创建可用于组件化的 Swift 基础项目。
本项目根据我个人的习惯和需求简化了许多步骤,所以看起来不是那么灵活,甚至是难以改造,以符合您的需求的。但是不要担心, “使用方法” 介绍了最简单的使用步骤,另外通过阅读源码,相信您也可以快速的改造本项目,以符合您的需求。
说到这里,有必要提一下 “我个人的习惯”:
-
我所有的项目都使用 Swift 编写,所以本项目没有提供 Objective-C 的模板代码。
-
对于每个组件,我几乎都会创建两个项目:
ExampleModule
和ExampleModuleRouter
, -
我使用同一个
Workspace
管理上述两个项目,并使用CocoaPods
管理依赖。 -
ExampleModuleRouter
依赖了 URLNavigator,作为模块的路由组件。 -
ExampleModule
会依赖ExampleModuleRouter
,具体的内容可以参考本项目的 Podfile 文件
fork
本项目, 然后根据您的需求修改模板项目 (记得将 fast_create_module.rb 文件内的 模板项目的 git 地址替换为您fork
后的地址 )
def clone_template
# 修改该地址为您 fork 后的仓库地址
`git clone -b develop https://github.com/rakuyoMo/FastModule.git`
end
-
在 GitHub 或其他代码仓库平台,创建您的组件化项目,并将其克隆到本地
-
打开命令行,使用
cd
命令进入到第二步所克隆的项目的路径下 -
执行
ruby fast_create_module.rb
,或其他方法执行这个脚本
稍等片刻,您就可以得到一个配置好的基础项目了。
举个例子,现在我需要一个名为 ExampleModule
的组件:
-
fork
本项目,并在 fast_create_module.rb 中修改 URL 地址。 -
将本项目克隆到本地,例如到桌面:
/Users/rakuyo/Desktop
-
打开 GitHub 并且创建一个名为
ExampleModule
的项目,它的 URL 看起来像是:https://github.com/rakuyoMo/ExampleModule.git
-
克隆这个项目到本地,它的本地路径看起来是:
/Users/rakuyo/Desktop/ExampleModule
-
cd /Users/rakuyo/Desktop/ExampleModule
-
ruby /Users/rakuyo/Desktop/FastModule/fast_create_module.rb
当脚本执行完毕时,如果一切顺利,ExampleModule
的项目目录看起来会是下面这样:
.
├── LICENSE
├── ExampleModule
│ ├── ExampleModule
│ ├── ExampleModule.xcodeproj
│ ├── ExampleModuleTests
│ └── ExampleModuleUITests
├── ExampleModule.xcworkspace
├── ExampleModuleRouter
│ ├── ExampleModuleRouter
│ ├── ExampleModuleRouter.xcodeproj
│ └── ExampleModuleRouterTests
├── Podfile
├── Podfile.lock
├── Pods
│ ├── Headers
│ ├── Local\ Podspecs
│ ├── URLNavigator
│ └── URLNavigator.xcodeproj
└── README.md
说到这个,也是摸索的结果... 一开始对这个需求没什么思路,后来了解到了 CocoaPods 开源的 Xcodeproj 才有了一点思路。
最开始打算完成使用 Xcodeproj
来实现,创建两个项目,然后配置项目内容,再添加到 Workspace
中。实践起来后发现非常复杂...
后来参考了 pod lib create
的实现思路,改为使用 模板项目。
就是这样,最后也没有用到 Xcodeproj
,但是脚本已经写完了,也就这样了...
我仅仅是一个 iOS 开发者,除了一些基本的 CocoaPods 操作外,几乎没有接触过 Ruby,所以这个项目可能会有很多不足之处。
如果您发现了什么问题,或者有什么意见和建议,欢迎提 issues
给我。
最后由衷的希望本项目可以帮助到您。