从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飞