关于 compare-bundles
用于比较两个 Tuist bundle 的技能,帮助开发者检查构件树、安装与下载大小,以及可能造成体积差异的变化。
主要功能
- 01按 ID 或分支查找 bundle
- 02比较构件树
- 03衡量安装与下载大小变化
- 04检查版本和平台差异
- 05提出缩减体积的措施
适用场景
- 01检查不同分支的 bundle 体积
- 02查找导致体积增加的构件
- 03评估版本或平台变化的影响
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tuist/ agent-skills --skill compare-bundles安装后在 Claude Code 中输入/compare-bundles确认已加载。
详细介绍
比较 Bundle
快速开始
通常你会收到两个 Bundle 标识符。按以下步骤操作:
- 运行
tuist bundle list --json,查找每个分支上的 Bundle。 - 分别运行
tuist bundle show <bundle-id> --json,查看 base 和 head Bundle。 - 使用
tuist bundle artifact list <bundle-id> --json比较构件树。 - 比较安装大小、下载大小及其他元数据。
- 总结大小变化,并给出可执行的建议。
第 1 步:解析 Bundle
如果 base/head 是 Bundle ID 或仪表板 URL
直接获取:
tuist bundle show <base-id> --json
tuist bundle show <head-id> --json
如果 base/head 是分支名称
列出每个分支上最近的 Bundle,并选择最新的:
tuist bundle list --git-branch <base-branch> --json
tuist bundle list --git-branch <head-branch> --json
然后使用 tuist bundle show <id> --json 获取完整详情。
默认值
- 如果未提供 base,则使用项目的默认分支(通常是
main)。 - 如果未提供 head,则检测当前 git 分支。
第 2 步:比较构件树
使用 tuist bundle show <id> --json 获取两个 Bundle 后,比较各个构件:
tuist bundle artifact list <base-id> --json
tuist bundle artifact list <head-id> --json
按名称匹配两个 Bundle 中的构件。留意:
- head Bundle 中新增的构件(可能导致大小增加)
- 已移除的构件(说明大小减少的原因)
- 现有构件的大小变化
第 3 步:比较顶层指标
获取两个 Bundle 后,比较:
| 指标 | 检查内容 |
|---|---|
install_size | 如果 head 大于 base 的 5%,则标记 |
download_size | 如果 head 大于 base 的 5%,则标记 |
version | 记录版本变化 |
supported_platforms | 记录平台变化 |
app_bundle_id | base 和 head 应保持一致 |
计算差值:
- 安装大小差值:
head_install_size - base_install_size - 下载大小差值:
head_download_size - base_download_size - 变化百分比:
delta / base_size * 100
第 4 步:分析大小变化
如果大小显著增加(>5%):
- 检查
version是否发生变化,这可能解释预期的大小增长。 - 检查
supported_platforms是否发生变化(增加平台会导致大小增加)。 - 查看 Bundle 详情中的
artifacts字段,了解各个构件的大小。
大小增加的常见原因:
- 新增了框架或库
- 资源目录变大(新增图片、视频)
- 资源未优化(使用大型 PNG,而非压缩格式)
- 发布构建中包含了调试符号
- 新增了本地化内容
大小减少的常见原因:
- 移除了未使用的框架
- 优化了资源
- 改进了摇树优化或死代码消除
- 将功能移至按需资源
总结格式
总结应包含:
- 总体结论:大小增加、减少或保持稳定。
- 安装大小:绝对变化量和百分比变化。
- 下载大小:绝对变化量和百分比变化。
- 版本:说明版本是否发生变化。
- 平台:说明是否有平台变化。
- 建议:针对大小回退提出可执行的后续步骤。
示例:
Bundle Comparison: base (v2.1.0 on main) vs head (v2.2.0 on feature-x)
Install Size: 45.2 MB -> 52.8 MB (+16.8%) -- REGRESSION
Download Size: 28.1 MB -> 32.4 MB (+15.3%) -- REGRESSION
Version: 2.1.0 -> 2.2.0
Platforms: iOS, macOS (unchanged)
The install size increased by 7.6 MB. This is a significant increase
that may affect user download and storage experience.
Recommendations:
- Review new frameworks or assets added in this version
- Check for uncompressed resources or oversized image assets
- Consider using asset compression or on-demand resources
- Run `xcrun bitcode_strip` analysis to check for unnecessary bitcode
完成检查清单
- 已解析 base 和 head Bundle
- 已使用
tuist bundle artifact list比较构件树 - 已比较安装大小和下载大小
- 已分析大小变化的根本原因
- 已提供可执行的建议
评论
支持 Markdown