tidemark 是我维护的一个小工具,把 Markdown 转成公众号能直接粘贴的 HTML。代码量不大,但 CI 里的构建要跑 38 秒,本地改一行主题样式也要等十几秒。对一个“调样式”的工具来说,这个反馈速度是致命的。
先量,再改
我没有一上来就换构建工具,而是先给每个阶段打了时间戳:
time pnpm build --reporter=verbose
结果很扎心:真正的编译只占 6 秒,剩下的时间都花在两件事上:每次都重新解析 12 套主题的 CSS,以及把测试快照一起打进产物。
三步优化
- 主题预编译。 主题 CSS 在发布前就编译成 JSON,运行时只读不算。这一步省掉 19 秒。
- 拆掉不该打包的东西。 快照和 fixtures 从构建入口里剔出去,产物体积小了 70%。
- 增量缓存。 用文件内容哈希做缓存键,主题没改就直接复用,本地热更新降到 300 毫秒左右。
一个小教训
回头看,最大的收益来自“不做事”,而不是“把事做快”。很多慢构建都是在重复做一件不需要重复的事。下次觉得构建慢,先别急着换工具,打开时间戳看一眼。
现在 CI 的构建稳定在 4 秒上下,我也终于敢在咖啡凉掉之前把主题调完了。