从Hexo迁移到Hugo
文章目录
之前使用Hexo工具来作为博客生成工具的,使用了大概半年左右,期间换过了一两次电脑,这就使得每次使用的时候都需要重新下载 nodejs、npm,然后下载安装hexo,执行 npm install 等等一系列的命令,期间可能还会遇到各种各样的问题。最近看到了Hugo这款博客生成工具,它是使用Go语言编写的,只有一个二进制文件,使用非常简单,在尝试了之后决定将之前在hexo的博文全部迁移到hugo上。
hugo的优点
- 使用go语言编写,运行效率非常快,使用hexo生成网页大约需要5s,使用hugo只需要1000ms即可完成.
- 使用方便,只有一个二进制文件,完全不需要依赖第三方的工具.
- 后续更换电脑时也方便,只需要在新环境上重新下载一下hugo即可继续编写博文.
更多的关于Hugo的介绍,请参考Hugo的官网 https://gohugo.io/ 。
安装hugo
手动下载
我们可以直接从Github Release页面下载对应的二进制文件,然后把它放在你的PATH目录里即可使用。这个支持任何平台,根据自己的平台选择相应的二进制包即可,最后记得将hugo可执行文件的位置加入到对应的环境变量中。
命令行下载
|  |  | 
安装完成后,可以运行如下命令查看其版本号,如果成功输出则说明安装成功
|  |  | 
使用hugo
创建站点
在空闲目录下,建立一些名为blog的站点,使用命令
|  |  | 
在blog目录下,会出现 archetypes/ config.toml content/ data/ layouts/ static/ themes/文件或文件夹,config.toml 就是博客的配置文件,archetypes 目录下有一个 default.md,存放 的是默认的建立新博文时候使用的模板,可以根据自己需求修改。content/ 目录用来存 放博文,static/ 可以存放一些自己的文件,theme/ 文件夹用于存放不同的主题。
安装主题
建立站点以后,我们需要安装主题,Hugo 提供了一个主题浏览网站 ,可以浏览各种主题的效果。这里我选择了 even 主题作为本站的使用主题。
在博客根目录下,使用下面命令安装主题:
|  |  | 
然后编辑 config.toml,设置主题为 even
|  |  | 
更多该主题的使用说明,请查看该主题的 中文说明
新建博文
假如要建立新的博文 test.md,使用下面的命令
|  |  | 
这个命令会在 content 目录下建立 post 目录,并在 post 下生成 test.md 文 件,博文书写就在这个文件里使用 Markdown 语法完成。博文的 front matter 里 draft 选项默认为 true,需要改为 false 才能发表博文,建议直接更改上面说的 archetypes 目录下的 default 文件,把 draft: true 改为 draft: false,这 样生成的博文就是默认可以发表的。
和 Hexo 一样,在 front matter 里面,使用 tags 指定文章的 tag,使用 categories 指定文章的类别,示例如下:
|  |  | 
可以把 Hexo 博客里的所有博文 Markdown 文件拷贝到 content/post/ 目录下
查看效果
为了查看生成的博客的效果,可以使用 hexo server 命令,示例输出如下
|  |  | 
该命令会生成的一个本地的博客服务器,直接访问网址 http://localhost:1313/ 即可查看生成的博客效果。
部署到github
本部分假定你在 github pages 建立的是 User/Organization Pages ,地址名称形式为 https://<USERNAME|ORGANIZATION>.github.io/,如果不是这种类型地址,请参考官方 指导。
- 先创建一个 .gitignore文件,内容如下
|  |  | 
- 运行下列命令,期间可能输入github账号密码
|  |  | 
这样即可将本地文件全部上传到 hugo 分支,接着按照使用Travis CI自动部署hugo文章的操作,即可自动部署网页,或者参照官方文档的做法自己写一个脚本文件也可以。
遇到的问题
文章的permalinks设置
Hexo 中,文章的链接都是 YYYY/MM/DD/post_name/ 的格式,在 Hugo 中,可以通过设 置 permalinks 参数来实现平滑过渡,在 config.toml 中加入以下设置:
|  |  | 
大小写问题
Hugo 默认会把 url 中的大写字符转为小写 ,如果不想转换,在配置文件中加入
|  |  | 
Hugo 默认会把分类(categories)名称转为小写,如果不想转换,在配置中加入,
|  |  | 
tags和categories
与hexo不同, hugo使用的是类似于数组的形式的, 例如本篇的tags就是["hexo", "hugo"], 而在hexo中则是
|  |  | 
图片的上传
这里建议使用github图床+PicGo工具的使用组合来解决图片问题,具体参考该文章 PicGo+GitHub图床,让Markdown飞