前言

已经使用了 Hexo 快两年了,主题换过 Butterfly, Fluid, NexT, Icarus ……这两天又开始准备瞎折腾的时候,我试了下 Hugo,然后发现真香啊,索性就一鼓作气把博客整个迁移了😂,体验了几天来说说 Hugo 相对于 Hexo 的一些优点吧:

  • 没有依赖,就单纯的一个二进制文件,不会像 Hexo 一样动辄几百 MB 的 node_modules

  • 肉眼可见的快,同样使用 Cloudlfare Pages 集成部署网站,从开始构建到部署到 Cloudlfare 全球 CDN,Hexo 一般需要 2~5 分钟1,Hugo 只需要不到 30 秒2

  • Hugo 的本地预览服务器使用的是基于 websocket 的 livereload.js,hugo server 非常快,当你编辑完 Makrdown 文件或者配置文件保存修改,再切换到浏览器查看本地预览的时候,你看到的已经是新的网页了3

  • Hugo 的 Markdown 渲染简单易用,像“脚注”都是默认支持的

安装 Hugo

在 Windows 系统下,我还是建议 使用 Scoop 管理 Windows 下的软件和开发环境,安装 Hugo 也很简单

scoop install hugo-extended

这时候 Hugo 就安装完成了,是不是很快?🤣

初始化博客

这步是在本地新建一个 blog 目录存放博客相关的文件,类似于 Hexo 的 hexo init blog

hugo new site blog

在这个目录初始化下 Git

cd blog && git init

设置默认分支为 master

git config --global init.defaultBranch master

安装主题

博客使用 Git 进行版本管理,所以如果使用 git 方式安装主题的话,要将主题添加给 Git 子模块

# Git 方式安装主题
git clone https://github.com/adityatelange/hugo-PaperMod themes/PaperMod --depth=1
# 添加 Hugo-Papermod 主题为子模块
git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
# 如果以后从 Git 托管平台克隆博客的时候,子模块可能不会被克隆(比如 GitHub)
git submodule update --init --recursive

现在这个博客路径如下

blog:.
│   .gitmodules      # Git 子模块
│   config.toml      # Hugo 配置文件,建议转换成 Yaml 格式
├───archetypes       # 模板,类似于 Hexo 的 scaffolds
│       default.md   # 默认模板
├───content          # 内容路径,文章和页面的 Markdown 文件都放这里
├───data             # 储存供模板调用的数据文件?暂时用不上不管它
├───layouts          # 布局目录
├───static           # 静态文件目录(构建时全部拷贝到 /public 里,相当于网站资源的根目录)
└───themes           # 主题目录

修改配置

比较习惯使用 Yaml 配置文件,所以将配置文件改为 config.yaml 后修改自己的配置

# 基础配置
baseURL: "https://dejavu.moe"
title: "Dejavu's Blog"
languageCode: "zh-tw" # 语言编码(如简体中文: zh-CN)
DefaultContentLanguage: "zh-tw"
hasCJKLanguage: true  # 检测 CJK
paginate: 6           # 每个分页文章数
paginatePath: "page"
permalinks:           # 永久连结格式
    post: /:slug/
    page: /:filename/
theme: "PaperMod"

enableInlineShortcodes: true # 短代码支持
enableRobotsTXT: true # 启用 Robots.txt
buildDrafts: false
buildFuture: false
buildExpired: false
enableEmoji: true     # 启用 Emoji
enableGitInfo: true # Using the last git commit date for that content file.
pygmentsUseClasses: true
# googleAnalytics: UA-123-45

启用 RSS

outputs:
    home:
        - HTML
        - RSS
        - JSON
        
params:
    ShowFullTextinRSS: true # RSS 全文输出

更换 Hugo 后 RSS 路径也发生了变化,之前 Hexo 是 atom.xml,现在是 index.xml

迁移网站

Hugo 的 Front Matter 部分几乎和 Hexo 差不多

title: "静态博客博客框架从 Hexo 迁移到 Hugo"
description: "博客框架迁移体验——从 Hexo 转到 Hugo,主题是简约而不简单的 PaperMod"
date: 2022-03-16T07:23:50+08:00
lastmod:
slug: hexo-to-hugo
categories:
- 博客维护
- 折腾日志
tags:
- Hexo
- Hugo
- Blog
image: hexo-to-hugo.svg
comments: true
hidden: false
math: false
toc: true

然后修改下文章的永久链接格式,基本不需要太多的迁移成本,其他的配置参考 Hugo 文档 & Papermod 主题文档 就好啦~


  1. 在本地渲染同样多的文章情况下,Hexo 需要十几秒,而 Hugo 只需要几百毫秒 ↩︎

  2. 文章一样多的情况下,目前 Cloudlfare Pages 的构建速度还是明显不如 Netlify, Vercel 等平台的) ↩︎

  3. Hexo 只能即时预览本地的 Markdown 文件,但是诸如修改 Hexo 配置文件的时候需要重启 hexo server ↩︎