搜索

PythonReactSEOPDF
GitHub Skill

bundle-size

Bundle size analysis, budget enforcement, and regression detection for Vite/Rollup builds. This skill should be used when: (1) analyzing bundle composition or total size, (2) checking size budgets, (3) comparing PR vs baseline for regressions, (4) investigating why bundle size increased, or (5) optimizing bundle size. Reads Vite manifest for chunk graph (Tier B). Cannot attribute sizes to specific npm packages without stats.json (Tier C unavailable by default).

nikhillinit☆ 0 仓库 Stars0 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

Bundle Size Analysis

Quick Reference

Operation Command Output
Check budgets node scripts/check-budgets.cjs Pass/fail per bundle
Size report node scripts/size-report.mjs Top 10 assets by gzip
Compare to baseline node scripts/compare-bundle-size.js Delta + PR comment
First load size node scripts/size-first-load.mjs Initial load bundle size
Visual treemap Open dist/stats.html Interactive module breakdown

Capability Tiers

This skill operates at different capability levels depending on available data:

Tier Data Required Available
A dist/ files only Always
B + dist/public/.vite/manifest.json After npm run build
C + stats.json from Rollup NOT enabled by default

See references/capability-tiers.md for details.

CRITICAL: Agent Claim Constraints

These rules are NON-NEGOTIABLE. Violating them produces hallucinations.

Tier A/B (Default - No stats.json)

ALLOWED claims:

  • "Total JS is 245KB gzipped"
  • "The largest chunk is vendor-abc123.js at 118KB"
  • "Initial load includes 3 entry chunks totaling 89KB"
  • "Bundle increased 12KB (+5%) from baseline"
  • "New file vendor-forms-xyz.js appeared in this build"

FORBIDDEN claims:

  • "lodash contributes 40KB to the bundle"
  • "Replace moment.js with dayjs to save 30KB"
  • "The zod package is responsible for the increase"
  • "date-fns accounts for 15% of vendor chunk"

When asked about package attribution:

"To identify package-level contribution, open dist/stats.html for an interactive treemap, or enable Rollup stats output in vite.config.ts for programmatic analysis."

On Regressions

ALLOWED:

  • Report the delta (bytes and percent)
  • List new/removed/changed files
  • Reference commit diff if available

FORBIDDEN:

  • Guess the cause without evidence
  • Attribute to specific code changes without seeing the diff
  • Claim a package caused the regression

When cause is uncertain:

"Bundle increased by X KB. To identify the cause, review the commit diff or open dist/stats.html to compare module sizes."

Existing Scripts

scripts/check-budgets.cjs

Per-bundle budget enforcement. Reads .size-limit.json configuration.

node scripts/check-budgets.cjs
# Exit 0 = pass, Exit 1 = budget exceeded
scripts/size-report.mjs

Reports top 10 largest assets by gzip size.

node scripts/size-report.mjs
# Outputs table to stdout
scripts/compare-bundle-size.js

Compares current build to baseline artifact. Used in CI.

node scripts/compare-bundle-size.js --base baseline.json --head current.json
scripts/size-first-load.mjs

Reports the initial load bundle size (entry chunks only).

node scripts/size-first-load.mjs
# Outputs initial load size

CI Integration

The existing workflow .github/workflows/bundle-size-check.yml:

  1. Downloads baseline artifact from main branch
  2. Builds PR branch
  3. Compares sizes
  4. Posts PR comment with delta
  5. Fails if budget exceeded (unless approved:perf-budget-change label applied)

Troubleshooting

See references/troubleshooting.md for common issues:

  • Manifest not found
  • Baseline unavailable
  • Budget configuration errors

Enabling Tier C (Package Attribution)

To unlock package-level attribution, add Rollup stats output:

// vite.config.ts
import { visualizer } from 'rollup-plugin-visualizer';

export default defineConfig({
  plugins: [
    visualizer({
      filename: 'dist/stats.json',
      json: true,  // Enable JSON output
    }),
  ],
});

WARNING: This increases build time. Only enable if package attribution is regularly needed.

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-01-20
索引更新时间
2026-01-26
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!