零依赖静态博客:一个 build.js 搞定
想写博客,又不想为了写几篇文章装一整条工具链。于是用 Node 内置模块写了个构建脚本:读 markdown、套模板、输出静态文件,就这三件事。
它做四件事
- 扫描
posts/*.md,解析开头的 front matter(标题、日期、标签) - 把 markdown 转成 HTML —— 自己写的小解析器,够用就行
- 套进
template.html,生成首页、文章页、标签页和 RSS - 把
assets/原样拷进输出目录
为什么不用现成的
| 方案 | 好处 | 代价 |
|---|---|---|
| Hexo | 主题多、插件全、中文资料最多 | 几百 MB 依赖,改主题得学 EJS 模板 |
| Hugo | 构建极快、单个二进制无依赖 | 模板是 Go template 语法,改起来陡 |
| 自己写 | 每行都看得懂,想怎么改怎么改 | 功能得自己加,比如搜索、分页 |
用现成的完全不丢人,自己写纯粹是因为好玩。
核心其实就一个函数
function renderMarkdown(src) {
// 逐个块处理:代码块 → 标题 → 引用 → 表格 → 列表 → 段落
// 行内再处理:行内代码 → 图片 → 链接 → 粗体 → 斜体
}
真正花时间的是边界情况:行内代码里的 ** 不能被当成粗体、列表嵌套要靠缩进判断、表格的 : 决定对齐方向。
写文章是什么体验
往 posts/ 丢一个 .md,跑一下构建,完事。文件名前面的日期决定排序:
posts/
├─ 2026-09-12-hello.md
├─ 2026-09-05-零依赖静态博客.md
└─ 2026-08-18-项目记录模板.md
图片就放在 assets/ 里,正文里这样引用:。