关于 ln-832-bundle-optimizer
此 Skill 通过测量构建产物并仅保留能缩小体积的改动,优化 JavaScript 和 TypeScript 项目的 Bundle。它会报告体积变化及尝试结果。
主要功能
- 01构建并测量 Bundle 基线
- 02查找未使用依赖和大型包
- 03通过构建验证保留或撤销改动
- 04报告体积变化及移除的依赖
适用场景
- 01缩小 JS/TS 项目的构建产物
- 02验证优化改动是否降低 Bundle 体积
MCP 相关
可用时,此 Skill 会使用 hex-graph 和 hex-line MCP 工具查找热点并读取本地内容;否则改用内置工具。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-832-bundle-optimizer安装后在 Claude Code 中输入/ln-832-bundle-optimizer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/ci_tool_detection.mdcoordinator_summary_contract.mdmcp_integration_patterns.mdmcp_tool_preferences.mdoptimization_categories.md详细介绍
路径: 文件路径(
references/、../ln-*)均相对于此技能目录。
ln-832-bundle-optimizer
类型: L3 Worker 类别: 8XX 优化
使用保留/舍弃验证来减小 JavaScript 或 TypeScript Bundle 的体积。仅适用于 JS/TS 项目。
概述
| 方面 | 详情 |
|---|---|
| 输入 | JS/TS 项目路径,以及可选的优化范围 |
| 输出 | 更小的 Bundle,以及机器可读的现代化摘要 |
| 范围 | 仅限 JS/TS |
工作流
阶段: 预检 -> 基线 -> 分析 -> 优化循环 -> 报告
阶段 0:预检
| 检查 | 必需 | 缺少时的操作 |
|---|---|---|
存在 package.json | 是 | 阻止优化 |
| 有可用的构建命令 | 是 | 阻止优化 |
可检测输出目录(dist/ 或 build/) | 是 | 执行一次构建以建立基线 |
| 工作区基线安全 | 是 | 在受管运行中,协调器已提前准备好;在独立运行中,在本地保护回滚 |
必须阅读: 加载 references/ci_tool_detection.md 以检测构建方式。
工具策略:遵循宿主 AGENTS.md 中的 MCP 偏好;仅在宿主策略缺失或 MCP 行为不明确时,加载 references/mcp_tool_preferences.md 和 references/mcp_integration_patterns.md。
当热点或克隆组能显著提升优化定位效果时,优先使用 hex-graph。如果可用,优先使用 hex-line 读取本地代码和配置。如果 MCP 不可用、不受支持或未建立索引,则继续使用内置的 Read/Grep/Glob/Bash,并在摘要中说明回退情况。
运行时协调
受管运行会从 ln-830 接收确定性的 runId 和准确的 summaryArtifactPath。
仍支持独立运行;如果省略了运行时参数,则在返回前生成一个独立运行范围的制品。
阶段 1:建立基线
1. Run the detected build command.
2. Measure total size of the output directory.
3. Record baseline bytes and per-chunk sizes.
| 指标 | 方法 |
|---|---|
| 总体积 | 对所有 Bundle 输出文件求和,排除源映射文件 |
| 分块体积 | 测量各个 JS 和 CSS 文件 |
| 源映射处理 | 排除 .map 文件 |
阶段 2:分析优化机会
| 检查 | 工具 | 检查内容 |
|---|---|---|
| 未使用的依赖项 | depcheck 或同类工具 | 未在任何位置导入的包 |
| Bundle 组成 | Bundle 分析器 | 体积较大的依赖项或重复项 |
| Tree-shaking 缺口 | 手动扫描 | 命名空间导入或体积较大的入口点 |
| 代码拆分缺口 | 路由分析 | 可延迟加载的候选项 |
优化类别:
| 类别 | 示例 | 典型节省量 |
|---|---|---|
| 移除未使用的依赖项 | 冗余依赖项 | 每个包 10-50KB |
| 命名导入 | lodash-es 命名导入 | 50-200KB |
| 更轻量的替代方案 | 替换体积较大的日期或工具库 | 50-300KB |
| 动态导入 | 延迟加载体积较大的组件 | 减小初始 Bundle 体积 |
| CSS 优化 | 移除未使用的 CSS、压缩 | 10-100KB |
阶段 3:优化循环(保留/舍弃)
每个优化周期:
FOR each optimization:
1. APPLY the change
2. BUILD
IF build fails -> DISCARD and revert
3. MEASURE new bundle size
4. KEEP only if the bundle is smaller than the current baseline
5. LOG the result
停止条件:
| 条件 | 操作 |
|---|---|
| 已处理所有优化项 | 停止并报告 |
| 连续舍弃 3 次 | 因优化停滞而停止 |
| 构建基础设施故障 | 回滚到最近一次保留的状态并停止 |
| Bundle 已低于目标值 | 停止并报告 |
优化顺序:
- 移除未使用的依赖项
- 改进 Tree-shaking 和导入方式
- 替换体积较大的库
- 引入代码拆分
- 优化 CSS
阶段 4:报告结果
| 字段 | 描述 |
|---|---|
project | 项目路径 |
baseline_bytes | 原始打包体积 |
final_bytes | 最终打包体积 |
reduction_bytes | 节省的字节数 |
reduction_percent | 缩减百分比 |
optimizations_applied | 保留的优化数量 |
optimizations_discarded | 数量及原因 |
deps_removed[] | 已移除的依赖项 |
details[] | 各项优化节省的体积 |
artifact_path | 持久化的工作器报告路径(如果已写入) |
配置
Options:
build_command: "" # Auto-detect
output_dir: "" # Auto-detect
run_depcheck: true
run_bundle_analyzer: false
remove_unused_deps: true
fix_tree_shaking: true
replace_heavy_libraries: true
enable_code_splitting: true
错误处理
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 优化后构建失败 | 代码或配置更改无效 | 撤销该项优化 |
| 体积没有缩减 | 优化未生效 | 弃用该项优化 |
| 分析器不可用 | 缺少工具 | 继续手动检查 |
参考资料
- optimization_categories.md
references/ci_tool_detection.md
运行时摘要产物
必须阅读: 加载 references/coordinator_summary_contract.md
生成 modernization-worker 摘要信封。
托管模式:
ln-830会传递确定性的runId和准确的summaryArtifactPath- 将摘要写入提供的
summaryArtifactPath
独立模式:
- 省略
runId和summaryArtifactPath - 写入
.hex-skills/runtime-artifacts/runs/{run_id}/modernization-worker/ln-832--{identifier}.json
Monitor(2.1.98+): 对于 keep/discard 循环中预计耗时超过 30 秒的构建命令,请使用 Monitor。备用方案:Bash(run_in_background=true)。
完成标准
- 根据实际构建输出确定基准打包体积
- 根据打包内容和项目用法分析优化机会
- 通过保留/弃用验证评估每项优化
- 仅保留能缩减体积的优化
- 最终报告记录打包体积变化、已弃用的尝试和已移除的依赖项
- 将
modernization-worker摘要产物写入托管或独立模式指定的路径
版本: 1.0.0 最后更新: 2026-03-08