「博客搭建」从 Hexo 转向 Hugo:静态博客迁移

多年前从Hexo开启博客之旅。当时被它丰富的主题生态、基于Node.js环境并轻松部署到GitHub Pages的特性所吸引。 然而随着时间推移,博客文章逐渐累积,逐渐感受到了Hexo构建速度的瓶颈。 直到接触了Hugo,号称“世界上最快的网站构建框架”,使用Go语言编写,千篇文档秒级生成,构建速度更快,内存消耗也更低。

Hexo迁移到Hugo虽然需要一些初期投入,但带来的性能提升和开发体验改善是显著的。Hugo文档详细,学习曲线平缓。

迁移前准备工作

  1. 内容备份
    • 文章源文件(source/_posts/
    • 主题配置文件(_config.yml 和主题目录)
    • 图片等静态资源
  2. 环境配置
    • 先决条件:在使用Hugo时常常需要使用到GitGoDart Sass
    • 下载Hugo
      • 预编译的二进制文件可用于多种操作系统和架构。访问最新发布版本页面,并向下滚动至“Assets”部分。
      • 下载对应操作系统的最新版本压缩文件,然后解压到目标目录,并将该目录添加到PATH环境变量中。
    • 验证安装:
      hugo version
      

内容迁移

  1. 创建Hugo站点
    hugo new site myblog
    cd myblog
    
  2. 批量处理Markdown文件(hexo-posts/*.md
    • 手动调整 Front Matter
      • Hexo 的 title: → Hugo 保留
      • date: → 格式改为 2024-01-02T15:04:05+08:00
      • tags: → Hugo 支持相同语法(tags: ["tag1","tag2"]
      • 删除 Hexo 特有字段(如 categories: 建议改为 Hugo 的 categories
    • 自动转换工具(可选):
      • 使用 Python 脚本批量修改 Front Matter
      • 工具推荐:https://github.com/wangchucheng/hugo-hexo
  3. 复制文章到Hugo
    • Hexo_posts复制到Hugocontent/posts/
  4. 静态资源处理
    • Hexosource/images/复制到Hugostatic/images/
    • 文章中图片路径改为:![alt](/images/example.png)

主题与配置

  1. 选择并安装主题:将Ananke主题克隆到themes目录中,并将其作为Git子模块 添加到项目中。
    git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke
    
  2. 向站点配置文件中追加一行,指示当前使用的主题。
    echo "theme = 'ananke'" >> hugo.toml
    
  3. 手动配置 hugo.toml
    baseURL = "https://yourdomain.com/"
    languageCode = "zh-CN"
    defaultContentLanguage = "zh"
    theme = "ananke"
    
    [params]
      title = "博客名称"
      description = "博客描述"
    
    [menu]
      [[menu.main]]
        name = "首页"
        url = "/"
        weight = 1
    

构建与发布

  1. 添加新文章
    hugo new content/posts/new-post.md
    
  2. 文章Front Matter示例
    title: "文章标题"
    date: 2024-01-15T14:30:00+08:00
    tags: ["标签1", "标签2"]
    categories: ["分类"]
    draft: true
    
  3. 运行包含草稿内容
    hugo server -D # 或 hugo server --buildDrafts
    
  4. 发布网站:Hugo会在项目根目录的public目录中创建整个静态网站。
    hugo
    
  5. 托管和部署
END .
×