从Hugo到Zola——又一次博客迁移

·7min·李岩

又迁移博客了。回顾下最早的博客是使用Hexo写的,当时工作了两年,希望能通过一种方式对工作中的经验进行整理。Hexo的完成度很高,可以直接在Hexo-Admin中对博客进行撰写,同时实时渲染,查看效果。但是每次在使用时,往往会遇到很多依赖的更新,而且往往会有一些不兼容——可能是本地环境和博文框架的不兼容,或者是依赖升级后的不兼容。厌倦了长久的依赖升级等待以及冲突修复后,我从Hexo迁移到了HugoHugo的完成度同样非常高,直接从网络上使用一个公开的模版即可流畅的启动,自己撰写一个简易的迁移脚本即可完成博文主要内容的迁移。Hugo迁移至Zola的契机是26年的2月12日,提交了一篇博客一种责任链模式的实现,2月24日查看时,发现未更新。确认是deploy.yml执行build时出现失败,解决未果,遂弃之。使用Zola来重新启动。

迁移体验

总体来看尚可,从三个方面来评价迁移体验。就迁移后至今的使用来看,Zola的使用方式和Hugo相比是很接近的,基本上一个指令即可启动。完成度上,仍然是Hexo最好,Hugo次之,Zola看着完成度欠缺。Hexo支持Admin插件来新建、编辑、发布博客;Hugo支持命令行新建一篇博文;Zola则只能手动操作了。另一个重要的特性是使用的可靠性,这个可能更多的是和博客的主题选择有关。本次迁移后使用的是Kita主题,主题较为简洁,具备基础性的功能——对应的是一些功能的缺失,如留言功能和全局搜索功能,这两个功能对我而言都可有可无。

迁移后,博客通过Emacseww仍然能够较为便捷的访问。

迁移过程

依稀记得此前的Hugo迁移过程还是比较顺利的,主要是对此前博文的一些标签的格式转换。本次迁移在大模型的加持下,一些格式转换是非常容易做的。只是主题使用上有一些繁琐。下面记录下我这里的过程,希望能够提供一些参考。

  1. 主题设置 拷贝一份目标主题的博客,这样就能够省去很多参数的配置的工作。本人这里拷贝的是st1020/blog Kita作者本人的博客参数设置。拷贝后主要做content/博文目录的调整和static/目录下各种icon的调整。
  • 拷贝后保留content/目录下的_index.mdpages/,目录下的其他博文内容删除。调整config.toml中的博文说明内容、博客首页栏目内容,调整content/pages/about.md中的个人介绍。
  • 将此前Hugo主题下的行走icon拷贝到了static目录下,通过大模型来对目录下原有icon进行替换。

这样一来,主题设置初步完成。

  1. 博文迁移 将旧博文中的文档迁移到新博文目录的content/目录下。Hugo中也是在content/目录,我这里是直接进行的拷贝。拷贝后需要对如下内容进行调整:
  • 博文中的前置变量。此前我的博文前置变量使用的是Yaml格式,这次迁移使用大模型全部转换为了Toml格式。categoriestags需要放置在[taxonomies]配置下。
  • 博文目录文档名。Zola上实践较好的是content/{{blog-name}}/index.md。此前Hugo中的博文对于博文的文档名没有过多的限制,而Zola上默认是识别index.md/_index.md。从实践中看,将旧的博文文档都调整成content/{{blog-name}}/index.md效果较好。

上述内容设置完成后,在本地是可以直接启动并且预览的。如果都没有问题,即可以发起迁移。

  • 基于旧博文的主分支克隆一个备份的分支。留个念想。
  • 使用新博文的文件覆盖博文主分支的文件。由于本人在github上创建了Action,会触发博文内容的编译,因此public/目录中的内容对我而言是不需要的。这里覆盖后清理了public/下生成的博文页。
  • 更新博文主分支,等待Action执行。这里补充一些细节,我的博文主分支是master,在github个人页上配置的博文分支是gh-pages。我这里的更新指的是更新master分支。更新后,github会依据master分支中的.github/workflows/deploy.yml配置的Actionmaster上的内容触发zola build,并将master分支中的public/更新到gh-pages分支,从而完成对博文的更新。这样一来,master分支即可无需保存诸多的编译产物,保持master分支的简洁。

本次迁移相比Hexo迁移到Hugo,迁移的诉求更加明确——只希望能够尽可能稳定的保留博客的基础功能,尽可能多的去除额外的可能会带来维护成本的功能。本次迁移由于大量的使用了大模型,因此很多的程序性工作完成的都很顺利。确实是大模型的时代了。

以上,新春愉快~