← 返回博客

把 tidemark 的构建从 38 秒压到 4 秒

tidemark 是我维护的一个小工具,把 Markdown 转成公众号能直接粘贴的 HTML。代码量不大,但 CI 里的构建要跑 38 秒,本地改一行主题样式也要等十几秒。对一个“调样式”的工具来说,这个反馈速度是致命的。

先量,再改

我没有一上来就换构建工具,而是先给每个阶段打了时间戳:

time pnpm build --reporter=verbose

结果很扎心:真正的编译只占 6 秒,剩下的时间都花在两件事上:每次都重新解析 12 套主题的 CSS,以及把测试快照一起打进产物。

三步优化

  1. 主题预编译。 主题 CSS 在发布前就编译成 JSON,运行时只读不算。这一步省掉 19 秒。
  2. 拆掉不该打包的东西。 快照和 fixtures 从构建入口里剔出去,产物体积小了 70%。
  3. 增量缓存。 用文件内容哈希做缓存键,主题没改就直接复用,本地热更新降到 300 毫秒左右。

一个小教训

回头看,最大的收益来自“不做事”,而不是“把事做快”。很多慢构建都是在重复做一件不需要重复的事。下次觉得构建慢,先别急着换工具,打开时间戳看一眼。

现在 CI 的构建稳定在 4 秒上下,我也终于敢在咖啡凉掉之前把主题调完了。