build(tooling): [ENG-11] add module analysis without changing artifacts

This commit is contained in:
Harvey Zhao committed 2026-09-11 22:22:53 +08:00
1 parent 4a9a26d4fc
commit 5efc7f7699
11 files changed
+12673 -16

No files matched your search

@@ -0,0 +1,15 @@
# CORE-22 核心阶段完整验收
起点为 ENG-08 提交 4a9a26d4,工作区干净,CORE-21/23、PILOT-01、ENG-08/10 前置均已完成。本任务尚在实施,不能视为核心或 npm 发布验收完成。
首先处理 ENG-PERF-01/02:确认核心体积增长的源码/构建来源,保留旧版与候选真实字节和相同格式;对间歇构造耗时继续同环境配对取证。不得通过提高阈值、删除兼容功能或忽略采样差异让报告通过。
随后复查核心公开差异、运行时与声明消费者、资源和完整安装包浏览器矩阵。旧核心/新插件及新核心/旧插件的生态范围、外部 SDK 和物理设备缺口,必须明确链接对应集成/REL 任务,不能把 chapter 试点结果当作全部插件通过。
若归因发现需要独立实施的模块修正,按 execution-gates.md 拆分任务和下游依赖,逐项验收后独立提交。当前尚无优化收益或兼容总验收结论。
## 首轮体积归因
可复用的正式构建分析从本任务拆为 ENG-11,下游依赖已更新;在该前置交付前本任务暂回 todo,保留初步工作,不重复宣称工具实现。当前三格式产物没有变化。详见 [归因说明](../build-analysis.md) 和 [完整数据](../baselines/bundle-attribution.json)。
同工具链下,起点源码构建现代包 gzip 为 35703 字节,当前为 58374 字节;主要增量仍来自实现而非换编译工具。已提交产物对照中,键盘/焦点、设置树和显示模式三阶段合计约占净 gzip 增量六成。接下来审查这些模块的可避免开销与构造耗时,不删除已有回归保护的兼容、清理和错误恢复路径。
@@ -0,0 +1,13 @@
# ENG-11 正式构建模块分析
CORE-22 在处理 ENG-PERF-01 时,需要把实际产物增长与源码模块、历史提交对应。该工具对其他包同样可用,故从核心总验收中拆为独立工程任务;不将归因工具交付算作核心性能问题已解决。
新增可选 `yarn build <package ... | all> --analyze`。独立报告模块读取 Rollup 的实际模块信息并记录最终产物哈希,仍使用同一正式构建脚本、目标、压缩参数、banner 和兼容导出处理。报告在独立 cache 目录,不改变 dist 清单,不开启 sourcemap,不增加运行时依赖。默认构建方式不变。
验证使用既有真实构建夹具:TS、JS、Less、SVG 和 inline worker 的三个格式在分析开关前后字节一致,报告指纹与实际文件一致。实际核心分析结果也与 ENG-08 已验证产物完全一致。另用起点 40fcda6a 的源码在隔离目录和当前工具链重建作归因,清楚区分旧工作区与 npm 发布来源。完整数据及统计限制见 [维护说明](../build-analysis.md)。
收尾核查 Rollup 实现发现其长度属性是 UTF-16 代码单元,而 code 的后续缩进也会改变长度。报告改为对实际模块 code 使用 Buffer.byteLength 计算 UTF-8 字节,保留两种原生长度为独立字段;重新构建两组对照,未将旧长度冒充字节。完整 CI 476 项通过;这项报告字段修正后,lint 和实际三格式构建用例再次通过。
[冻结归因证据](../baselines/bundle-attribution.json) 保存两组各三格式报告、发布基线尺寸、历史提交尺寸、样式探针和构建工具指纹。当前三个 JS 产物与 ENG-08 一致,未改变播放器运行行为、公开接口或版本。类型/浏览器无需为相同字节重复制造新通过记录,CORE-22 的完整验收仍继续。
ENG-11 done,独立本地提交包含实现、测试、文档和计划调整。为了遵守任务前置规则,CORE-22 在该工具交付前暂回 todo,初步归因记录保留;本提交核实后恢复 doing。性能/体积风险仍 open,没有优化收益或发布放行结论。回退只移除分析开关、报告模块、相关测试和文档,不能回滚前置重构成果。