SuperAPI AI 工具集

optimize-bundle-size

通用与其它

查看项目

更新于 10-15 21:37

技能介绍

用途:这是 Elastic Kibana 仓库中的包体积优化工作流,目标是保持 limits.yml 限额稳定,把非关键代码移出入口 bundle。

主要能力与步骤:

  1. 建立基线:参考 docs/extend/ci-metrics.md 了解指标定义与限额流程;用 node scripts/build_kibana_platform_plugins --focus <pluginId> --dist --workers 4 构建,再查看 <pluginDir>/target/public/metrics.json。排查回归时可用 git show upstream/main:packages/kbn-optimizer/limits.yml 与本地 rg 对比插件限额。
  2. 定位入口 chunk 驱动模块:加 --profile --no-cache 生成 profile 构建,用 jq 从 stats.json 找入口 chunk id 及该 chunk 内体积最大的模块,必要时对比分支间模块 id 差异。
  3. 高影响修复:把 start contract 中的急切导入改为惰性边界;避免从入口路径导入宽泛的 barrel 文件(index.ts),改为直接导入所需模块;将重型 UI 拆到单独文件并用 React.lazy(() => import(...)) 加载。允许异步 chunk 增大,只要初始加载不需要。
  4. 重新测量并决定限额:重建 dist 指标对比前后;若新值低于旧限额则保留或恢复旧值;仅在无法有效拆分时才提高限额并记录原因,可用 --update-limits(设为当前体积 +15kb)并在 PR 说明中写明发现。
  5. 验证:对改动文件运行针对性 lint/type 检查,运行 node scripts/check_changes.ts;迭代时可选 --validate-limits 或 --dist --watch。若 check_changes.ts 因无关的既有文件失败,需在 PR 说明中明确指出。

适用场景:Kibana 插件开发者主动优化包体积、排查体积回归、调整限额。

限制:资料未提供具体版本要求、依赖环境、耗时或效果数据;命令中的 <pluginId>、<pluginDir> 需替换为实际值。