感觉用 Hexo 编译博客越来越慢了,而且 Hexo 社区也不怎么活跃,索性把博客迁移到了 Hugo。虽然我个人很讨厌 Golang,但是 Hugo 的用户体验还是不错的。之前用 Hexo 的时候要修改主题的内容就要修改主题目录内的文件(哪怕只是加菜单),给自动化构建带来了很大的困扰,而 Hugo 就没有这种问题。那么这篇讲讲自动化构建吧。
为了减少构建系统本身的问题,与博客内容无关的东西(比如主题)就要甩出去。Hugo 这一点做得很好,官方推荐的模式就是 git submodule。Hugo 的主题系统支持自定义导航菜单,不用像 Hexo 一样为了修改导航去修改主题文件,修改主题内容也可以通过类似 patch 的方式(把修改放在博客目录里),真的是比 Hexo 先进多了。
最开始当然还是想选择习惯的持续构建系统,Travis-CI + GitHub Pages。今天听说 GitHub Pages 支持自定义域名的 HTTPS 了,就打算迁移过去,但是始终没有配置成功(证书总是 GitHub 的,而不是自己的域名的)。既然这样,还是得试试新东西,恰好之前听过朋友推荐的 Netlify,用 Let’s Encrypt 做自定义域名的证书,而且号称比 GitHub Pages 快,还是免费的,那就试试。
Netlify 是可以不写代码就完成构建系统的配置的,但是我似乎用到了一些 Hugo 的新功能,默认版本的 Hugo 不能用。学习写配置太麻烦了,结果发现 Hugo 网站上提供了一个样例 netlify.toml
,果断使用之。
[build]
publish = "public"
command = "hugo"
[context.production.environment]
HUGO_VERSION = "0.40.2"
HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true"
把配置文件提交上去以后,Netlify 就会自动开始构建,速度比 Travis CI 快,估计是很多静态站点编译器都集成了,不需要构建系统现去安装。Netlify 基本可以全部在网页的图形界面下完成,所以也没什么好说的。自定义域名、SSL 证书都是点一下的事情。
所以我就又水了一篇博客,其实什么都没讲。
最后吐槽一下,Hugo 的模板系统太复杂了,又是一套自定义的语法(似乎是 Golang 的模板引擎系统),我想移植之前的博客主题都无从下手,最后索性换了一个主题。