Hexo用久了,感觉静态页面生成时间太久,同时又懒得对整个项目做备份,导致常常有想写博客的想法的时候,都会因为觉得麻烦而打消。 于是,今天尝试迁移到了Hugo,体验意外的不错。

Hexo和Hugo的Markdown文档基本上都是通用的,基本上可以做到无痛迁移,同时也修改了评论插件,Disqus墙内基本上都是访问不到的,现在修改成了Gitment,发现通过Issus的方式来进行评论也相当不错。

迁移过程

参考Hugo官方文档,通过submodule来同时管理源文档和静态页面,并保留原有hexo的commit,步骤如下:

  1. 新建一个Hugo项目mysite,可以先进入mysite中配置Hugo主题、迁移原有hexo文档等…搞定之后别忘了用hugo server命令预览一下
1
hugo new site mysite
  1. 新建一个git仓库github.com/akillcool/blog,用于保存整个hugo项目,建议仓库权限改为Private,clone整个空仓库下来,并将hugo项目copy到这个仓库中去。
1
2
3
4
5
# clone空仓库
git clone git@github.com:akillcool/blog.git

# 进入blog目录
cd blog
  1. 通过git submodule来clone下来之前的Hexo静态文件,并删掉以前的Hexo静态文件
1
2
3
4
5
# 添加Github Pages对应的仓库为git submodule,并clone到public目录
git submodule add -b master git@github.com:akillcool/akillcool.github.io.git public

# 删除原有的Hexo文件
rm -rf ./public/*
  1. 复制mysite中的内容到blog目录下
1
cp -r path/to/mysite/* path/to/blog/
  1. 部署

这里按照官方文档的建议写了一个部署脚本,每次发布的时候执行一次脚本就行了

踩坑

使用git submodule的话,就别打开enableGitInfo选项了,它会错误地把父项目的git Hash给展示到文章中。看到Hugo项目有人提了个PR解决这个问题,但是到现在都还没有被merge:

总结

通过git submodule来同时管理Hugo项目和Github Pages网站项目更加方便,把配置文件放到私有仓库也相对安全一点点。写完Markdown文档,执行一次部署脚本,所有东西就全部备份归档了。这种便利性,也让人更能燃起写blog的欲望。

最后安利一下,Hugo的Shortcodes很好用,上面的gist就是用Shortcodes插入的。