博客迁移
2021年1月1日,告别使用了三年的Hexo,正式迁移到Hugo.
原因
使用Hexo+Next+GitHub Pages搭建博客已经有三年的时间了,但是随着文章数量的增长,Hexo生成博客的速度也慢下来了,而且Hexo对Latex公式的支持不给力。怀着对Golang 的信仰,至此加入Golang的生态圈,拥抱Hugo。
开始迁移
简介
Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.
Hugo是一个基于Go语言开发的静态网站生成器,主打简单、易用、高效、易扩展、快速部署,丰富的主题也使得Hugo在个人博客站点搭建方面也使用广泛。迁移到Hugo后,安装、构建、部署整个流程相比Hexo,速度提升飞快🚀。
安装
本地macOS平台直接使用Homebrew
安装
|
|
创建新站点
|
|
这个时候就已经创建了新的博客站点blog
,并且创建了第一篇文章博客迁移.md
,新建的文章位于/blog/content/posts
目录下。
draft: true
为draft: false
使用主题
Hugo提供了丰富的主题,可以在这选择喜欢的主题,并添加到刚刚新加的博客站点,以我选择的LoveIt主题为例
首先将主题添加到项目blog/themes
目录,根目录下执行:
|
|
然后在/blog/config.toml
配置主题参数:
|
|
这个主题功能很强大,更多详细配置及功能可以参考项目Docs
本地展示
此时执行以下命令即可在本地 http://localhost:1313/ 预览当前站点状态
|
|
快速部署
准备好部署网站时,运行
|
|
可以快速构建网站,项目根目录下会生成public
目录,其中包含博客站点所有内容和资源,直接部署在web服务器即可。
以部署到github pages为例,参考Hugo官网说明,创建public
子模块,关联原先github page仓库用户名.github.io
,将每次构建结果提交到远程仓库,可以通过自动部署脚本实现快速部署
|
|
到这一步,每次更新文章之后,需要在本地 blog 目录下手动执行
|
|
来部署到github page、coding page等静态页面。
启用搜索
基于 Lunr.js 或 algolia, LoveIt 主题支持搜索功能.
输出配置
为了生成搜索功能所需要的 index.json
, 请在你的 网站配置 中添加 JSON
输出文件类型到 outputs
部分的 home
字段中.
|
|
搜索配置
基于 Hugo 生成的 index.json
文件, 你可以激活搜索功能.
这是你的 网站配置 中的搜索部分:
index.json
到 algolia 来激活搜索功能. 你可以使用浏览器来上传 index.json
文件但是一个自动化的脚本可能效果更好.
Algolia Atomic 是一个不错的选择.
为了兼容 Hugo 的多语言模式, 你需要上传不同语言的 index.json
文件到对应的 algolia index, 例如 zh-cn/index.json
或 fr/index.json
…自动上传
每次写完博文都手动上传索引文件无疑是痛苦的、无意义的重复劳动。 因此我们需要把上传索引文件的操作自动化,在自动部署的时候顺便完成即可。 这里我们采用npm包 atomic-algolia 来完成上传操作。
-
安装 atomic-algolia 包
1 2
npm init -y // npm默认生成package.json文件 npm install -g atomic-algolia // npm全局安装atomic-algolia
-
修改目录下的
package.json
文件1 2 3 4
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "algolia": "atomic-algolia" },
注意
"test"
那一行末尾有个英文逗号,不要漏了。 -
blog 根目录下新建
.env
文件1 2 3 4
ALGOLIA_APP_ID=你的Application ID ALGOLIA_INDEX_NAME=你的索引名字 ALGOLIA_INDEX_FILE=public/algolia.json ALGOLIA_ADMIN_KEY=你的Admin API Key
另外特别注意
ALGOLIA_ADMIN_KEY
可以用来管理你的索引,所以尽量不要提交到公共仓库。 -
上传索引的命令
1
npm run algolia // 在blog根目录下执行
后续就是把下面的命令加到你的部署脚本即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#!/bin/sh # If a command fails then the deploy stops set -e printf "\033[0;32mDeploying updates to GitHub...\033[0m\n" # Build the project. hugo -t LoveIt # if using a theme, replace with `hugo -t <YOURTHEME>` # Go To Public folder cd public # Add changes to git. git add . # Commit changes. msg="rebuilding site $(date)" if [ -n "$*" ]; then msg="$*" fi git commit -m "$msg" # Push source and build repos. git push origin master cd .. # 自动更新文章索引 npm run algolia
拥抱Hugo
还有更多的功能等待探索中… 目前使用下来,Hugo整体的使用体验很不错,后面会将个人文章陆续迁移到这,慢慢完善。