Canvas Workspace / Bundle Program

体积优化,不只是让 entry 数字变小

从构建产物、真实启动闭包到发布安装包,五类动作已经完成并通过最终验收。

审计基线:2026-07-11 · commit 0eb7a4a4 最终验收:23 / 23 Gate 通过

最终缩到了什么程度

实际完成态的条形长度表示最终值相对原始审计基线的剩余比例。

收益由五类动作共同完成

每阶段独立提交和验收,先拿确定性收益,再处理架构边界。

01

修正测量口径

从单 entry 升级为 manifest 启动闭包、功能首用和安装包分层指标。

23 / 23 Gate 通过
02

开启生产压缩

Renderer 显式启用 esbuild 与 CSS minify,Main 单独评估。

Total JS 降低 47.6%
03

清理发布包重复依赖

迁移 Renderer-only 依赖,精简 locales、无用 SDK 和打包资源。

DMG 减少 64.3 MB
04

拆分首屏功能边界

Settings、DevTools、Drawer、搜索、非默认节点和词典按需加载。

Entry 降至 619 KB
05

File 预览与编辑分层

只读态使用轻量预览,进入编辑后再初始化 Tiptap 和 grammar。

启动闭包降低约 72.9%

基线、动作与实际收益

每一项都绑定真实问题和可验收结果,避免只优化报表数字。

Renderer 构建

产物压缩

生产构建没有启用 minify。Total JS 10.60 MB

Renderer 显式启用 esbuild minify,并确认 CSS minify;检查 name 依赖与生产错误栈。

Total JS → 5.56 MB
降低 47.6%

首屏入口

应用功能边界

Entry 以应用代码为主,Settings、实验页、Drawer 等仍在首屏。Entry 1,380 KB

按用户首用拆功能,同时迁移对应 CSS;i18n 只加载当前语言词典。

Entry → 619 KB
降低 55.1%

真实启动

File / Tiptap

欢迎画布的 File 节点挂载即创建完整编辑器。启动闭包约 3.22 MB

只读 Markdown preview 与编辑器分层,进入编辑态后再加载 Tiptap,收敛 grammar 集合。

Canvas / LCP → 888.1 / 892.9 KB
降低约 72.9%

发布安装包

依赖去重

Renderer 依赖既进入 Vite bundle,又被 Builder 复制进 node_modules。DMG 160.8 MB

迁移 Renderer-only 依赖、删除无引用 Requesty、精简 Electron locales 与发布资源。

DMG → 96.5 MB
降低 40.0%

Main 进程

插件按需加载

Feishu、Agent Teams、happy-dom、MF runtime 进入默认主进程路径。Main 953 KB

保留轻量注册 shell,命中功能开关或首次调用后再动态加载实现。

Main → 495 KB
降低 48.1%