开篇:为什么还要自己写一个博客
这个站是 2026 年 10 月重建的。之前我在几个平台上写过东西,最后都因为「平台不是我控制的」而放弃了:一次是 API 改版把导出功能砍掉,一次是内容因为关键词被折叠,读者根本搜不到。
自建博客解决的问题很朴素:内容是一份纯文本,放在我自己的仓库里,域名指向哪里我说了算。
技术选型
真正动手前对比了几条路:
| 方案 | 优点 | 代价 |
|---|---|---|
| Jekyll | GitHub Pages 原生支持,零配置 | 本地要装 Ruby,改样式像在天书里打转 |
| Hugo | 构建快,单文件二进制 | 模板语法要单独学,调试体验一般 |
| Next.js | 生态最大 | 一个纯文本博客不需要运行时和 60MB 的依赖树 |
| Astro | Markdown 直接当数据源,产物是静态 HTML | 需要一次 npm 构建 |
最后选了 Astro,理由是它的 内容集合(Content Collections):文章的 frontmatter 有 schema 校验,写错字段名构建就会报错,而不是发布出去之后才发现日期没生效。
为什么不是纯手写 HTML
手写静态页我也试过,第一年版就是三个 HTML 文件。问题出在第三十篇:每写一篇都要手动改首页列表、改归档、改 RSS,漏一个就是一个坏链接。任何一点自动化到这里就开始回本。
部署链路
git push origin main # 触发 GitHub Actions
# Actions: npm ci -> astro build -> 上传 dist -> Pages 发布
推送之后大概 40 秒线上就能看到新文章,全免费。GitHub Pages 的带宽限制对个人站来说是天文数字,我这种流量水位完全不用担心。
唯一需要提前想清楚的是域名。域名和仓库名一样,换起来是有成本的——旧链接会全部失效。
接下来会写什么
- 具体做过的项目和里面踩的坑
- 一些工程实践:版本控制、构建、性能
- 偶尔的生活记录,不单独开站
如果这篇文章对你有帮助,欢迎订阅 RSS。