折腾的目的是为了不再折腾

使用静态网站生成器来写blog,我希望能:

  • 通过文件夹层级来按照年度、月度组织博客内容
  • 在本地创建的每个{blogname}.md文件对应一篇blog
  • 这个blog的附件放在{blogname}.assets中,与.md文件平级
  • 生成前不需要特别处理,即可发布所有blog内容

这样就能在本地组织保存所有的博客内容,无论以后需要如何生成如何部署,这些内容在本地保存、查看、修改是非常方便的。

我的本地目录大概这样:

1550804800161

```mermaid graph TD A[blog] --> E(2019) A[blog] --> D(2018) A[blog] --> C(2017) A[blog] --> B(2016) E --> E1(1) E --> E2(2) E --> E3(3) E1 --> blog1 E1 --> blog1.assets E1 --> blog2 E1 --> blog3 blog1.assets --> image1.jpg blog1.assets --> image2.jpg blog1.assets --> image3.jpg ```

静态架站的三个选择

  • github官方推荐的 jekyll:https://jekyllrb.com/
  • 快速、简单强大的 blog 框架 hexo:https://hexo.io/
  • 号称世界上最快的架站机 hugo:https://gohugo.io/

简单对比一下hexo/jekyll/hugo

这一番折腾体验,我的个人结论如下:

  • jekyll 最简单可以玩起来,只需要扔md文件进去就可以了
  • hexo 有最多最炫的主题,用户多
  • hugo 有最好的性能,生成速度闪电一样快

hexo装插件可以满足需求

刚开始用hexo架了站,根据我前面描述的目录组织形式,在安装了hexo-asset-image插件后,能很好的实现; 但是偶尔会发生 blog 中附件路径错误的问题,只有做hexo clean后,重新hexo g,重新hexo d,才会正常,非常的奇怪; 那我就有些担心,当 blog 和 image 越来越多后,是不是会很麻烦。

深入的使用hugo,有惊喜

第一印象

  • hugo 是用 go 写的,安装简单,目录干净(没有 node module 啥的)
  • 快,真的非常快。

config.toml中添加:

1
uglyurls = true

无需任何多余处理,生成的静态内容保留原目录组织形式和文件名,附件引用渲染都正确。 hugo 正确、简洁、干脆利落的解决了我的需求。

后续

又折腾了wercker做自动化构建发布:

https://gohugo.io/hosting-and-deployment/deployment-with-wercker/

wercker 被 oracle 收购后,UI 做了很大幅度的调整,文档和实际的界面有一些出入,后续我会再写一篇 blog 把流程梳理一下,还是很简单的。

接下来,从以前的blog备份中转换数据,按照日期重新组织进来; 这个工作量还是很大的,以前的博客尸体有 msnspace 的 livewriter 备份、wordpress 的数据库、typecho 的文本存储; 对以前的沙雕历史做个回顾也是挺有意思的。