Hexo blog 搭建笔记

Hello Hexo! Hello NexT! Hello GitHub Pages!

终于有一个完完全全属于自己的博客啦!弄完了以后很有成就感。

接下来会陆陆续续把博客园上的一些 post 搬过来。当然博客园也不会停止更新,会将自己比较用心记的笔记同步在两边发布。

在 Hexo 发布的第一篇博客,就简短的记录一下搭建的过程中遇到的问题和解决办法吧。

Hexo

Hexo 是一个博客框架,它允许我们使用 markdown 撰写文章。在写好之后,Hexo 将解析文章并快速生成静态网页。它提供了超多的插件 plugin 和接口,还有很多好看的博客 theme (最有名的应该就是我现在用的这一套 NexT)。

使用 Hexo 需要 Node.js 环境与 git。在必备的应用安装完成之后可以使用 npm 包下载器安装 Hexo npm install -g hexo-cli

在选择的根目录中打开 git Bash,使用 hexo init 命令初始化 Hexo 本地框架。初始化后根目录将会生成 (仅列出较为重要的):

  • source 文件夹:储存所有网页的源码 (markdown 文件)。其中的 _post 文件夹储存的是 post 的源码
  • themes 文件夹:储存 Hexo 主题。
  • scaffolds 文件夹:储存若干自定义的 [layout],即生成网页时采用的模板。初始 layout 有三种,分别是 draft, post 与 page。
  • public 文件夹:储存所有由 source 中源码生成的静态网页文件 (html 文件与 css 文件)。
  • _config.yml 文件:Hexo 基础样式自定义文件,提供了许多接口。注意与 themes 中的 _config.yml 文件相区分;后续的非侵入式 Hexo 主题自定义过程中,这两个配置文件是最为重要的。


GitHub Pages

我们可以将 Hexo 远程部署在 GitHub Pages 上,且后续可以绑定新的域名。

在本地配置 git 之后 (生成 RSA 密钥后 SSH 连接到 [email protected]),创建一个名称为 [username].github.io 的仓库。[username].github.io 是 Hexo 博客的网址。

安装 hexo-deployer-git 插件,更改 _config.yml 配置后即可将 Hexo 一键部署到 GitHub Pages。

本地 Hexo 根目录中的 .deploy_git 文件夹将会储存在远端仓库中。


Hexo Command

记录一下常用的 Hexo 命令。

new

使用 hexo new [layout] <title> 命令新建一个网页。

[layout] 储存在 scaffolds 文件夹中,初始有 post, page, draft 三种。当该函数缺省时,默认采用 post layout

<title> 包含空格,使用双引号括起来。

  • hexo new post <title> 新建一个 post。此时 source/_post 中将会生成可供编辑的 markdown 源码文件。新建文章时一般采用 post layout。
  • hexo new page <title> 新建一个 page。此时 source 中将会生成对应的 page 文件夹,并在其中生成可供编辑的 markdown 源码文件 (source/[title]/index.md)。新建页面 (如 about,tags,categories) 时一般采用 page layout。
  • hexo new draft <title> 新建一个 draft。此时 source/_drafts 中将会生成可供编辑的 markdown 源码文件。新建草稿时采用 draft layout,并且可使用 publish 命令 hexo publish [layout] <title> 将 draft 发布为正式的 post。

generate

使用 hexo g 命令生成静态文件 (即根据 source 中的源码文件生成 public 中的静态网页文件)。

server

使用 hexo s 命令启动服务器。默认情况下,本地访问地址为 https://localhost:4000/

启动服务器后可以访问上述本地地址对博客进行预览。

添加参数 --debug 在启动服务器后输出调试信息。

deploy

使用 hexo d 命令部署网站。

若 Hexo 部署在 GitHub Pages 上,该命令会将本地的更改 push 到远端仓库。

hexo g -dhexo d -g 命令的意义相同:让 Hexo 在生成静态文件后立即部署网站。

clean

使用 hexo clean 命令清除所有缓存文件 (db.json) 与已生成的静态网页 (public 文件夹)。

当发现本地更改不生效时,常 hexo cleanhexo g 刷新所有的静态网页文件。

一个典型的发布新文章过程:

  • hexo new post "hello-hexo" 新建 post,对 source/_post 中的对应 markdown 源码进行编辑。
  • hexo g 生成静态网页文件。
  • hexo s --debug 启动服务器,并访问 https://localhost:4000/ 预览查看本地的更改是否成功应用。若发现更改未生效,hexo cleanhexo g 重新生成所有的静态网页文件。重复该步骤,找到问题直至预览到本地更改生效。
  • hexo d 部署网站,此时 post 将在 [username].github.io 网址上发布。


Front-matter

Front-matter 是 markdown 源码最上方以 --- 分隔的区域,其规定了这个网页的各项属性。

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
---
title: Hexo study notes
date: 2023-05-24 17:43:00
tags:
- hexo
- blog
categories:
- notes
- hexo
mathjax: true
top: 1
comments: false
---

注意,这其中的一些 field 并不是默认的,而是在安装了对应的插件后实现的功能。

实现的过程就不一一介绍了,网上大把教程。

tags and categories

在启用这两个 fields 之前,需要启用自定义页面 (custom pages) tags 与 categories,之后就可以为文章添加 tags 与 categories 了。

注意对同一篇文章,tags 的关系是平行的,categories 的关系是树形的。

如上例,文章 Hexo study notes 的 tags 是 hexoblog,其所属的类别是 notes/hexo

mathjax

使用 Hexo 默认的渲染引擎时,markdown 中使用 $ 符号括起来的数学公式解析会出现问题。根据这一教程,我们安装 hexo-math 插件使用 MathJax/KaTex 渲染数学公式,并在每篇文章开头的 Front-matter 中启用 mathjax 引擎 (mathjax: true)。

top

安装 hexo-generator-index-pin-top 插件实现文章置顶功能。

添加 top field 来置顶文章:后面的数字代表置顶优先级。例:top: 10 的文章将会被置于 top: 1 文章的上方。

comments

本博客采用 valine 实现博客评论功能。缺省 comments field,评论区默认开启。

若想关闭某些 post/page 的评论区,在对应的 front-matter 中添加 comment field 并设定为否 (comments: false)。


Reference

  1. Hexo official documents

  2. NexT Theme for Hexo

  3. yearito-Hexo美化

  4. Hexo配置Mathjax渲染数学公式

  5. Hexo实现文章置顶功能

-----------------------------------そして、次の曲が始まるのです。-----------------------------------