A 40-line build script, and the trade-offs behind it

· 建站 / 零依赖

起因

我需要的是:把 Markdown 变成 HTML,套一层布局,生成 sitemap 和 404 页。就这些。

市面上的静态站生成器都能做,但它们同时带来了插件生态、主题约定、依赖树, 以及"我得先读懂它的文档才能改一句话"这一层成本。对一个月更一次的个人站, 这笔交易不划算。

我实际写了什么

一个七百行的 build.mjs,只用 Node 内置模块:

const css = await hashAsset('assets/style.css')

换来了什么

依赖树是空的,所以永远不会有 CVE 告警。构建不联网,三年前装的环境现在照样跑。 任何一行行为我都能读懂——出问题时是从头查,而不是猜框架在干什么。

代价是什么

这不是没有代价的取舍,列清楚:

场景现在的感受
想要插件(搜索、分页、RSS)得自己写,还得自己补测试
文章超过 15 篇没有分页,列表会变长
Markdown 语法想扩展改 bin/markdown.mjs,同一个文件里加,也在那儿测

个人站的内容量级下,这三行表还不足以推翻前面的收益。等哪天真的撞上了再改—— 那时候我已经把问题想清楚了,而不是在框架文档里找答案。

← Column