← 全部文章

2026.10.28 — 1 min read

用 200 行脚本,把 Markdown 变成网站

不装框架,不引依赖,只用一个构建脚本和一个静态目录。

工程前端

静态站点生成器有很多,Astro、Eleventy、Hugo,都很好。但这个站我选了最笨的办法:自己写一个构建脚本。

为什么不用框架

不是反对框架,是我需要的东西太少了:

  • 把 Markdown 渲染成 HTML;
  • 套一个布局;
  • 生成 RSS 和 sitemap;
  • 输出到 dist/。

这四件事加起来,一个脚本就够。用框架反而要花时间理解它的约定、追版本升级、处理插件冲突。

核心就三行

const { data, content } = matter(raw);   // 读 frontmatter
const html = marked.parse(content);      // Markdown → HTML
await fs.writeFile(out, layout(html));   // 套布局,写文件

gray-matter 负责解析头部元信息,marked 负责正文。两个依赖,加起来不到 1MB。

目录结构

content/
  posts/      文章,一个 .md 一篇
  projects/   作品
  about.md    关于页
src/
  pages.mjs   页面模板
  styles/     CSS
build.mjs     构建入口
public/       原样复制的静态资源

新增一篇文章,就是在 content/posts/ 里丢一个文件。文件名就是 URL,date 决定排序。

代价是什么

自己写构建脚本,代价是没有现成的生态。没有图片优化插件,没有 MDX,没有增量构建。

但换来的是:我知道每一行在干什么,出问题能在五分钟内定位,升级时不会有任何破坏性变更——因为它根本不会升级。

对一个个人站来说,这笔交易很划算。

继续阅读

2026.11.10 为什么要有一个自己的站 随笔 2026.10.12 域名、DNS、部署,全放在 Cloudflare 工具