动机

为什么在使用 CocoaPods 处理大型项目时,我们需要进行一些优化?
- 对 Pods targets 进行缓慢且不必要的索引,我们很少尝试编辑这些 targets 的实现;
- 多余的重新构建时间,可能是与 CocoaPods 或 Xcode 相关的问题导致的;
- 在项目中导航或编辑时 UI 冻结;
- 代码自动补全功能损坏或极慢;
- 笔记本电脑风扇噪音大,铝制外壳发热,以及无限旋转的彩色风车。

更多信息请参阅 📖 foundationremastering 故事。

描述

🏈 Rugby 是一个 CLI 工具,旨在解决上述问题
+ 缓存所有 pod 依赖项,并从 Pods 项目中移除它们的 targets;
+ 仅重新构建更改的 pod 甚至直接下载它们;
+ 从项目中删除任何不需要的带有源代码的 targets,并减小其大小。

它的不同之处在于?

🕊 不是项目依赖项,只是一个可选步骤;
🌱 不会更改 Podfile 和 Podfile.lock;
✈️可以运行 YAML 文件中的一系列命令
🕹️ 单命令用法;
🐳 准备好用于 远程缓存
🧣 舒适的日志输出;
🚀 使用 Swift 编写,并使用原生 Xcode 构建系统。

Ruby 替代方案: PodBuilder | CocoaPods Binary Cache | CocoaPods Binary


如何安装 📦

首先,如果您有第一个版本 Rugby 1.x,您需要删除它。
然后调用 where rugby 命令,并确保没有 rugby 的任何路径。

首次安装

curl -Ls https://swiftyfinch.github.io/rugby/install.sh | bash

自助更新

如果您已经安装了 Rugby,并且版本至少为 2.0.0b2,则可以使用以下命令。

> rugby update

完整指南

阅读指南 如何安装 它。
如果您正在寻找旧版本 Rugby 1.x,请访问 此页面

如何使用 🏈

前提条件

  1. 如果在您的项目中使用 Objective-C,请确保正确导入模块。
    使用 @import Something 代替 #import "Something.h"
    因为 Rugby 会将构建的 frameworks 包含在您的项目中;
  2. 在使用 Rugby 之前,您应确保您的项目源代码已最终确定。
    🔸 例如:如果您使用 SwiftGen,请在调用 Rugby 之前运行它。
    否则,您的源代码将在使用 Rugby 构建期间被修改。然后,二进制文件的哈希值将不匹配。
    如果遇到问题,请尝试使用 rugby build pre 预构建您的项目并最终确定源代码;
  3. 确保您的所有 pod(包括开发 pod)都准备好独立构建。
    否则,您可能会遇到一种情况,即其中一个 pod 在没有其依赖项的源代码的情况下无法正确重用。
    作为临时解决方法,您可以排除一些 pod,例如 rugby -e BadPod
    🔸 例如:如果您的某些 pod 使用了不正确的标头。

然后在每次 pod install 之后,在您的项目目录中运行此命令。
默认情况下,它将构建所有 targets

> rugby

使用 rollback 命令将其取消集成

> rugby rollback

此外,您可以编写自定义的 plan(命令序列)。
使用 🏈 RugbyPlanner 可视化项目中发生的更改,而无需应用它们。
有关高级用法,请阅读下面的文档。

📚 文档

📦 如何安装
📖 命令帮助
🚏 迁移指南
🐳 远程缓存


🤝 贡献

欢迎 打开 pull request发起讨论

已知问题 🐞
#394:无法通过 Xcode 运行测试(通过 make test 运行完美)
#270:缺少 public OutputType

📮 支持

如果您想支持这个项目,您可以做以下几件事
1) 点击 ⭐️。这是一个很好的标记,表示 Rugby 很有用;
2) 分享 这个项目 🌍 给其他人;
3) 在讨论 💬 区 留下反馈

让我们开始吧 🏈