mcpField
C
compare-bundles

compare-bundles

github.com/tuist开发35279 次安装31 周前更新
代码仓库

关于 compare-bundles

用于比较两个 Tuist bundle 的技能,帮助开发者检查构件树、安装与下载大小,以及可能造成体积差异的变化。

主要功能

  1. 01按 ID 或分支查找 bundle
  2. 02比较构件树
  3. 03衡量安装与下载大小变化
  4. 04检查版本和平台差异
  5. 05提出缩减体积的措施

适用场景

  1. 01检查不同分支的 bundle 体积
  2. 02查找导致体积增加的构件
  3. 03评估版本或平台变化的影响

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tuist/agent-skills --skill compare-bundles

安装后在 Claude Code 中输入/compare-bundles确认已加载。

详细介绍

比较 Bundle

快速开始

通常你会收到两个 Bundle 标识符。按以下步骤操作:

  1. 运行 tuist bundle list --json,查找每个分支上的 Bundle。
  2. 分别运行 tuist bundle show <bundle-id> --json,查看 base 和 head Bundle。
  3. 使用 tuist bundle artifact list <bundle-id> --json 比较构件树。
  4. 比较安装大小、下载大小及其他元数据。
  5. 总结大小变化,并给出可执行的建议。

第 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_idbase 和 head 应保持一致

计算差值:

  • 安装大小差值:head_install_size - base_install_size
  • 下载大小差值:head_download_size - base_download_size
  • 变化百分比:delta / base_size * 100

第 4 步:分析大小变化

如果大小显著增加(>5%):

  1. 检查 version 是否发生变化,这可能解释预期的大小增长。
  2. 检查 supported_platforms 是否发生变化(增加平台会导致大小增加)。
  3. 查看 Bundle 详情中的 artifacts 字段,了解各个构件的大小。

大小增加的常见原因:

  • 新增了框架或库
  • 资源目录变大(新增图片、视频)
  • 资源未优化(使用大型 PNG,而非压缩格式)
  • 发布构建中包含了调试符号
  • 新增了本地化内容

大小减少的常见原因:

  • 移除了未使用的框架
  • 优化了资源
  • 改进了摇树优化或死代码消除
  • 将功能移至按需资源

总结格式

总结应包含:

  1. 总体结论:大小增加、减少或保持稳定。
  2. 安装大小:绝对变化量和百分比变化。
  3. 下载大小:绝对变化量和百分比变化。
  4. 版本:说明版本是否发生变化。
  5. 平台:说明是否有平台变化。
  6. 建议:针对大小回退提出可执行的后续步骤。

示例:

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