- 无第三方解析库,自己处理标题、代码块与链接
- 一条命令生成索引页与标签页
- 支持监听目录,改动后自动重建
说明:这是一个示例项目条目。发布前请把它替换成你自己的真实项目,或直接删除本文件。
背景
上课记的笔记分散在十几个 Markdown 文件里,想找某个知识点只能靠搜索,也没有一个总览页。现成的静态站点生成器都偏重,于是写了个只做一件事的小工具。
做了什么
note build 扫描指定目录,把每个 .md 文件转成 HTML,再生成:
- 按修改时间排序的索引页;
- 按 frontmatter
tags聚合的标签页; - 每篇文章的标题锚点与目录。
note watch 监听目录变化,改动后自动重建,配合本地静态服务器就能实时预览。
技术方案
没有引入解析库,而是按行处理:识别围栏代码块并原样保留,识别 # 标题生成层级与锚点,处理行内代码、粗体与链接,其余内容包进段落。这个做法只支持笔记用得到的子集,但足够、可预测,也让自己搞清了 Markdown 的边界在哪。
难点
- 代码块里的
#不能被当成标题,解析必须先切分代码块再处理其余文本。 - 中文标题生成的锚点要保证唯一且稳定,重复标题追加序号。
- 文件很多时全量重建变慢,加了简单的文件 mtime 缓存。
复盘
如果继续做,会换成成熟的解析器并支持插件,因为「自己处理 Markdown 子集」在小范围内省事,一旦有人写表格和脚注就开始出问题。这让我理解了为什么工具应该在自己的核心问题上克制,而不是重新发明所有轮子。