Files
ArtPlayer/refactor/build-analysis.md
T

3.5 KiB
Raw Blame History

构建模块归因

运行 yarn build artplayer --analyze,或 yarn build all --analyze。正常构建产物与无此参数时一致;分析只写入 refactor/.cache/build-analysis/run-*,latest.json 指向本次目录,不向 dist 或 npm 包加入报告。

每个包/格式的 JSON 保存最终输出的字节数、gzip9 和 SHA-256,以及模块列表、renderedBytes、renderedCodeUnits、originalCodeUnits、保留/移除导出。renderedBytes 对实际模块 code 计算 UTF-8 字节;Rollup 自带长度是其统计时的 UTF-16 代码单元,单独保留而不冒充字节,后续缩进等也会改变 code,二者差值不能仅归因于字符编码。模块数值来自最终压缩前的 Rollup 渲染,不是可以相加的 gzip 贡献;originalCodeUnits 也不是原始 TS 文件大小。真实传输、网络缓存、解析或构造耗时不能由这些数字推导。

scripts/build-analysis.mjs 负责报告;projects.js 解析只对 build 有效的 --analyze;build.js 在已有 banner/global 转换之后挂载报告。正常模式不创建报告目录。refactor/scripts/build.test.mjs 实际构建 TS/JS/Less/SVG/inline worker,并验证分析开关前后三格式字节完全相同、dist 清单不增加文件、报告哈希等于输出哈希。

CORE-22 首次归因

固定已发布 5.4.0、重构起点 40fcda6a 的工作区源码、当前核心三者分别记录。起点源码使用当前工具链在独立目录重新构建,只用于同工具链归因,不能冒充已发布 tarball。

现代核心来源 原始字节 gzip9
已发布 5.4.0 134037 35486
起点工作区产物 134753 35735
起点源码用当前工具链重建 134697 35703
当前核心 207875 58374

同工具链对照仍增加 73178 原始字节、22671 gzip 字节;所以主要原因不是工具链切换。Artplayer.STYLE 单独比较只增加 1927 原始字节、277 gzip 字节,不能解释整体增长;独立字符串压缩仅用于诊断,不能从总 gzip 中直接减掉后视作 JS 精确贡献。

按已提交现代产物重新压缩,CORE-23 键盘/焦点为 +6852 gzip 字节,CORE-14 设置树为 +3772,CORE-16 显示模式为 +3223,合计约占起点至当前 gzip 增量的 61%。这些是各次实际提交的净变化,不是每个模块可以独立相加的压缩大小。早期工具函数 TS 迁移的增量为 45 字节,后续增量主要对应行为补齐、资源/竞态修复,不能概括为 TS 语法导致膨胀。

Rollup 模块组 起点渲染字节 当前渲染字节
setting 17167 51289
control 20634 35134
contextmenu 5841 12546
icons 23394 23560
option-validator 单模块 4217 4217
vendored screenfull 单模块 3581 3581

目录迁移会改变分组,例如 display 从旧 player 中移出,不能只按新目录的正增量计算功能成本。当前最大源码模块是 setting/render.ts,报告中的模块 code 为 11933 UTF-8 字节;Rollup 记录的渲染长度为 11598 代码单元。后续审查应结合它的失败回滚、更新冲突、挂载回调和焦点契约,不能为减小体积删除已有回归所保护的路径。

没有发现 TS、c8、Playwright 或 Vite 运行时进入核心产物。此轮仅完成归因工具和证据,尚未优化生产行为;ENG-PERF-01/02 保持 open,CORE-22 继续审查可避免的开销和构造耗时。不要把解释了来源等同接受了全部成本。