2026-07-14

手搓一个静态站点生成器

#static-site #python #diy

你大概听说过 Hexo、Hugo、Jekyll。它们都很强,强到——对于一个只想写几篇文章的人来说——有点重了。我用了几次,最后都卡在"配置比内容还多"这一步。

于是我给自己写了一个:不到 60 行 Python,读 Markdown,吐出 HTML。没有插件系统,没有主题市场,只有我想到的那点功能。

它到底做了什么

说白了就三步:

  • 扫描一个 posts/ 目录里的 .md 文件;
  • 用一个小函数把 Markdown 转成 HTML(其实可以偷懒用标准库);
  • 套进一个写死的模板,输出到 dist/。

核心大概长这样

import os, markdown, datetime

def build(src, dst):
    posts = []
    for f in os.listdir(src):
        if f.endswith(".md"):
            html = markdown.markdown(open(f"{src}/{f}").read())
            slug = f[:-3]
            out  = TEMPLATE.replace("{{body}}", html)
                            .replace("{{title}}", slug)
            open(f"{dst}/{slug}.html", "w").write(out)
            posts.append(slug)
    return posts

就这么点东西。没有依赖地狱,没有版本冲突,python build.py 跑完,一个站点就躺在 dist/ 里了。

为什么这比"用现成的"更爽

因为只有我自己用,所以我可以删掉一切我不需要的东西——标签云、评论系统、SEO 注入、RSS 自动发现……全删。剩下的,是纯粹的写作环境。

自己写的工具,最大的优点不是强大,而是你敢动它。

代价

当然,你得愿意写代码。但如果连这点脚本都懒得写,那要慎重点——你想要的,可能根本不是"博客",而是"发朋友圈"。

本站点(你正在看的这个)就是这类思路的产物:静态、零运行时依赖,丢到哪里都能跑。

← 返回文章列表