Files
pinyin-pro/benchmark
zhoulixiang 879ce3df39 feat: add bundle size comparison workflow
- 添加自动体积对比脚本 (benchmark/size-compare.js)
- 支持本地和 CI 环境的智能输出
- 创建独立的 GitHub Actions 工作流
- PR 中自动发布/更新体积对比评论
- 添加详细文档和快速参考指南

Features:
- 🔄 自动对比本地打包文件与 CDN 文件体积
- 📊 智能检测 CI 环境并调整输出格式
- 💬 PR 评论自动发布和更新
- ⚠️ 体积变化超过 5% 时显示警告
- 📈 GitHub Actions 注释集成

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-17 09:08:49 +08:00
..
2024-04-11 21:03:08 +08:00
2023-05-17 08:55:10 +08:00
2024-04-11 21:03:08 +08:00

Bundle Size Comparison

这个目录包含用于对比打包文件体积的工具。

📦 功能说明

size-compare.js 脚本可以自动对比本地打包后的 dist/index.js 文件与 CDN 上已发布版本的体积差异。

🚀 使用方法

本地运行

# 仅运行体积对比(需要先手动打包)
npm run size:compare

# 打包后自动进行体积对比
npm run build:compare

自动化运行

GitHub Actions 会在以下情况自动运行体积对比:

Pull Request 触发

当向 main 分支创建或更新 PR 时,会自动触发体积对比:

  • PR 创建时 (opened)
  • PR 更新时 (synchronize) - 推送新提交
  • PR 重新打开时 (reopened)

对比结果会自动作为评论发布到 PR 中,并在每次推送新提交时自动更新该评论。

Push 触发

当代码直接推送到 main 分支时,体积对比结果会显示在 GitHub Actions 的运行日志中。

工作流程

创建/更新 PR to main
       ↓
触发 GitHub Actions
       ↓
安装依赖 (npm install)
       ↓
构建项目 (npm run build)
       ↓
运行体积对比 (npm run size:compare)
       ↓
      ┌────────────────────┐
      │  对比本地 dist/    │
      │  vs CDN 文件       │
      └────────────────────┘
       ↓
      ┌────────────────────┐
      │ 计算体积差异       │
      │ 和百分比变化       │
      └────────────────────┘
       ↓
    ┌─────────────────┐
    │ PR 中自动发布/  │
    │ 更新评论        │
    └─────────────────┘

📊 输出示例

本地运行输出

========================================
   文件体积对比工具
========================================

本地文件: /path/to/dist/index.js
CDN 地址: https://cdn.jsdelivr.net/npm/pinyin-pro/dist/index.js

正在读取本地文件...
本地文件大小: 315.20 KB

正在获取 CDN 文件信息...
CDN 文件大小:  315.30 KB

----------------------------------------
对比结果:

本地文件比 CDN 文件小 104 B (-0.03%)
========================================

GitHub Actions 输出

在 CI 环境中,脚本会自动使用纯文本格式输出,并包含 emoji 标识:

  • ⬆️ 文件体积增加
  • ⬇️ 文件体积减少
  • 文件体积相同

如果体积变化超过 5%,会显示警告或祝贺信息。

PR 评论示例

当在 PR 中触发时,会自动创建如下评论:

## 📦 Bundle Size Comparison

========================================
   文件体积对比工具
========================================

本地文件: /home/runner/work/pinyin-pro/pinyin-pro/dist/index.js
CDN 地址: https://cdn.jsdelivr.net/npm/pinyin-pro/dist/index.js

正在读取本地文件...
本地文件大小: 315.15 KB

正在获取 CDN 文件信息...
CDN 文件大小:  315.30 KB

----------------------------------------
对比结果:

⬇️  本地文件比 CDN 文件小 150 B (-0.05%)

========================================

Updated at Fri, 17 Jan 2026 00:55:23 GMT

---
💡 提示: 此评论会在每次推送新提交时自动更新

🔧 技术细节

  • 自动检测 CI 环境,调整输出格式
  • 支持 HTTPS 重定向处理
  • 彩色终端输出(仅本地环境)
  • GitHub Actions 注释集成
  • 自动更新 PR 评论(避免重复评论)

📝 相关文件

  • size-compare.js - 体积对比脚本
  • ../.github/workflows/ci.yaml - 主 CI 工作流
  • ../.github/workflows/size-compare.yaml - 独立的体积对比工作流