静态网站生成器
这个 blog 一直是用自己写的静态网站生成器 (Static-Site Generator),从一堆 Markdown 文件里生成 HTML,再用 git 推到 Cloudflare Pages 上。
之前的生成器是 Python 写的。本来一直能用,然而去年有一天,一个 dependency 不知怎么回事坏掉了。(有可能是因为电脑上有几个版本的 Python 在打架吧。)不是什么大问题,创建了一个新的虚拟环境,重新装一下 Markdown 的库就又能跑了。又过了一阵子,生成 feed 的库里面有一行代码开始报错说「缺一个参数」。奇妙的是我这段时间根本没动过那写代码。
于是大过年的,决定用 Go 写了一个新的。其实还是有一些小问题的,比如 CSS 什么的。
上一版的 blog 生成器花了一星期。这一版的用了 3 天时间,但是实际写码的时间只有 11 个小时。中间用了很多 GitHub Copilot。
试图直接把一堆 Python 甩给 Copilot 让它「翻译」成 Go,但是它只是生成了一个简单的文件夹结构和一些并不重要的函数。
但是很多具体的功能,很多时候写个开头,一路按 tab 就行了。比如排序、regex、读写文件,都是它直接生成的。
该选哪些库也是 Copilot 教我的,比如用来解析 Markdown 的 goldmark,用来生成 feed 的 gorilla/feeds。这两个库实际用起来感觉也比 Python 的两个库更舒服。
而且我心想,既然都重写了,比如干脆加上语法高亮和 Mermaid 的支持,幸好 goldmark 的扩展都有现成的。
我之前一直用中文的楷体来表示强调,因为斜体汉字太难看了,手段是手动加 CSS。所以这次还试图写一个新的 goldmark 扩展,找个特殊符号,在解析的时候替换成 <span class="kai">
。但是有点复杂,Copilot 提示的做法都不能用,直接跑去读 goldmark 的代码对照,好像 Copilot 生成的一些函数用法已经 deprecated 了。于是后来放弃了。
Go 本身写起来就挺舒服的,再加上 Copilot 的助推,整个过程相当 pleasant。不过,虽然确实需要检查生成的代码,看它是不是在做正确的事,但在脑袋里形不成什么深刻的印象。