使用hexo构建博客大概是5、6年的事了,在此之前一直使用wordpress来搭建个人的博客。

而早些年博客系统仿佛也只有wordpress,当你想要搭建个人博客时,你只会得到一个答案,那就是wordpress

wordpress是如此强大,丰富的扩展,强大的管理后台,它能提供我们需要的一些。

毫无疑问,这就是我们需要的,何况全世界的人都在使用它。

然而,当面对繁杂而厚重的wordpress时,我们意识到我们需要的只是一个简单的,优雅的,能使用markdown书写的系统。

于是, 各种轻便的博客系统出现了,hexo就是其中之一。

尤其近几年来,技术爆发,各种优秀博客系统如雨后春笋般大量冒出。

Hexo迁移到Hugo

这次的主题是hexo迁移到hugo

hexo很好用,比hugo强大,插件非常丰富,然而成也插件,败也插件(个人观点),

  1. hexo的依赖关系非常复杂,而且有版本兼容性问题,版本升级更是望而却步,一个不小心就报错,然后就要调试许久,最后失去耐心,重新来过。
  2. 跨平台问题,环境问题很容易在不同平台出现问题。所以一旦配置好了,都不愿意再去碰它。

为什么最后选了hugo?
没有为什么,纯粹是因为它简洁,有几个主题入了我眼。

hugo的文档非常简单,使用也很简单,hugo是使用Go语言开发的。支持全平台。

下载地址(建议下载hugo-extended)

Mac系统建议直接使用Homebrew安装

$ brew install hugo

其他系统安装请参考这里

生成站点

$ hugo new site your_blog

这样一个站点就生成了

进入博客目录

$ cd your_blog

config.toml就是你博客的配置文件

创建文章

$ hugo new posts/index.md

生成静态文件

$ hugo

就是这么简单,划重点,最好使用发布模式生成的静态页面,因为开发者模式下生成的静态页面可能出现某些功能不正常。而hugo默认是开发模式,需要我们切换环境变量为发布模式

$ export HUGO_ENV=production

调试模式

$ hugo server

打印出

...
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop

请看上面的Environment: "development" 我们发布之前一般需要设置为production

也就是需要

$ export HUGO_ENV=production
$ hugo

重点,每次发布我们最好主动去删除public目录下面的文件,因为hugo不会自动去删除

安装主题

找到喜欢的主题,然后根据文档安装,一般来说,推荐使用git子模块的方式

$ git submodule add https://github.com/xxxt.git themes/xxx

然后修改根目录下的theme = "xxx"

其他知识点

关于hugo有几个需要了解的知识

  1. 默认文章模板,每个主题都有自己推荐的文章模板文件,位于themes/xxx/archetypes/目录下,建议把主题archetypes下的default.md复制到根目录的archetypes下,覆盖即可。
  2. 主题都有自己的默认配置文件,位于themes/xxx/exampleSite下,一般来说,我们只需要把主题themes/xxx/exampleSite下的config.toml覆盖根目录下的同名文件即可,然后去里面把一些作者个性化的信息修改为自己的。
  3. 文档目录参考主题themes/xxx/exampleSite/content下的即可。

基本上做到这些,你的hugo已经正常运行了。其他一些高级的自定义去参考你使用的主题就行。每个主题都有不同。

如何把hexo的文章迁移到hugo

首先需要确认你目前的hexo文章的格式,整体来说都是兼容的,可能不同主题有些不同,拿我hexo之前的格式举栗子。

title: '这是标题'
tags: 
- xxx
- xxx
id: 699
categories: 
- xxx
- xxx
date: 2014-10-07 14:37:25
---

当把所有的md复制到hugo后,发现报错了,这是因为标签分类格式不标准的问题
hugo支持的标准格式如下:

---
title: '这是标题'
tags: [xxx, xxx, xxx]
id: 699
categories: [xxx, xxx]
date: 2014-10-07 14:37:25+08:00
---

而且这套格式也完美兼容hexo。如果你本来就是这种格式,恭喜你,直接把文章覆盖过来就可以用了。如果不是,需要安装这个格式修改。改完后覆盖回hexo,你的hexo还能继续用。