「博客搭建」从 Hexo 转向 Hugo:静态博客迁移
多年前从Hexo开启博客之旅。当时被它丰富的主题生态、基于Node.js环境并轻松部署到GitHub Pages的特性所吸引。
然而随着时间推移,博客文章逐渐累积,逐渐感受到了Hexo构建速度的瓶颈。 直到接触了Hugo,号称“世界上最快的网站构建框架”,使用Go语言编写,千篇文档秒级生成,构建速度更快,内存消耗也更低。
从Hexo迁移到Hugo虽然需要一些初期投入,但带来的性能提升和开发体验改善是显著的。Hugo文档详细,学习曲线平缓。
迁移前准备工作
- 内容备份
- 文章源文件(
source/_posts/) - 主题配置文件(
_config.yml和主题目录) - 图片等静态资源
- 文章源文件(
- 环境配置
- 先决条件:在使用
Hugo时常常需要使用到Git、Go和Dart Sass。 - 下载
Hugo:- 预编译的二进制文件可用于多种操作系统和架构。访问最新发布版本页面,并向下滚动至“Assets”部分。
- 下载对应操作系统的最新版本压缩文件,然后解压到目标目录,并将该目录添加到
PATH环境变量中。
- 验证安装:
hugo version
- 先决条件:在使用
内容迁移
- 创建
Hugo站点hugo new site myblog cd myblog - 批量处理
Markdown文件(hexo-posts/*.md)- 手动调整 Front Matter:
- Hexo 的
title:→ Hugo 保留 date:→ 格式改为2024-01-02T15:04:05+08:00tags:→ Hugo 支持相同语法(tags: ["tag1","tag2"])- 删除 Hexo 特有字段(如
categories:建议改为 Hugo 的categories)
- Hexo 的
- 自动转换工具(可选):
- 使用 Python 脚本批量修改 Front Matter
- 工具推荐:https://github.com/wangchucheng/hugo-hexo
- 手动调整 Front Matter:
- 复制文章到
Hugo- 将
Hexo的_posts复制到Hugo的content/posts/。
- 将
- 静态资源处理
Hexo的source/images/复制到Hugo的static/images/。- 文章中图片路径改为:
。
主题与配置
- 选择并安装主题:将
Ananke主题克隆到themes目录中,并将其作为Git子模块 添加到项目中。git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke - 向站点配置文件中追加一行,指示当前使用的主题。
echo "theme = 'ananke'" >> hugo.toml - 手动配置
hugo.tomlbaseURL = "https://yourdomain.com/" languageCode = "zh-CN" defaultContentLanguage = "zh" theme = "ananke" [params] title = "博客名称" description = "博客描述" [menu] [[menu.main]] name = "首页" url = "/" weight = 1
构建与发布
- 添加新文章
hugo new content/posts/new-post.md - 文章
Front Matter示例title: "文章标题" date: 2024-01-15T14:30:00+08:00 tags: ["标签1", "标签2"] categories: ["分类"] draft: true - 运行包含草稿内容
hugo server -D # 或 hugo server --buildDrafts - 发布网站:
Hugo会在项目根目录的public目录中创建整个静态网站。hugo - 托管和部署
Hugo渲染的是静态网站,可以在任何地方托管Hugo网站。- Hugo托管和部署文档
END .