Hexo 安装

可以通过访问Hexo了解到安装方式。
安装 Hexo 前,需要确保电脑内已安装:

  • Git
  • Node.js (建议更新至最新的 LTS 长期维护版,参考Node.js 版本限制
  • 非必要选项:代码编辑器(如 VSCode)与 Markdown 编辑器(如 Typora)

可以选择全局安装

1
$ npm install -g hexo-cli

或局部安装

1
$ npm install hexo

可以通过hexo -v命令查看安装 hexo 版本,验证是否已安装成功。

初始化项目

选择一个合适的地方

1
2
3
$ hexo init <folder>
$ cd <folder>
$ npm install

其中<folder>是要建立的项目名。

核心目录如下:

.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes

常用命令有

1
2
3
4
5
6
$ hexo clean	# 清除生成的缓存
$ hexo g # 生成html
$ hexo d # 部署到远程
$ hexo s # 本地运行,地址:http://localhost:4000/
$ hexo g -d # 生成并部署到远程
$ hexo new "文章名"

具体使用可以参考网上其他教程。以下是生成与运行效果。

生成效果

运行效果

Github Page配置

首先需要在你的GitHub上创建一个名为username.github.io的仓库,其中username为你的GotHub用户名。

需要安装hexo-deployer-git

1
$ npm install hexo-deployer-git --save

打开 _config.yml 并修改

1
2
3
4
5
6
7
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git # 必须!
repo: https://github.com/<username>/<username>.github.io.git # 必须!
branch: master # 强烈建议
message: Site updated {{ now('YYYY-MM-DD HH:mm:ss') }} # 可根据需求修改

涉及github相关的登录等步骤请自行摸索或搜索网上资料。

主题选择

推荐一款名为Butterfly 的主题。

GitHub地址:jerryc127/hexo-theme-butterfly: 🦋 A Hexo Theme: Butterfly (github.com)

官网:Butterfly - A Simple and Card UI Design theme for Hexo

安装

进入项目根目录,我们会发现有一个themes的文件夹。如果有修改需求的话,可以选择将主题下载到这。我们这里选择直接使用npm进行安装。

1
$ npm install hexo-theme-butterfly

应用主题

修改 Hexo 根目录下的 _config.yml,把主题改为 butterfly

1
theme: butterfly

安装插件

如果你没有 pug 以及 stylus 的渲染器,请下载安装:

1
$ npm install hexo-renderer-pug hexo-renderer-stylus --save

配置

将node_modules/hexo-theme-butterfly目录下的 _config.yml文件内容,复制到根目录下的_config.butterfly.yml中(需自行创建)。

数学公式配置

官方文档Butterfly 安裝文檔(四) 主題配置-2 | Butterfly中推荐的是KaTeX插件,但是经过我的测试,MathJax的效果更佳。

修改主题配置文件

1
2
3
4
5
mathjax:
enable: true
# true 表示每一页都加载mathjax.js
# false 需要时加载,须在使用的Markdown Front-matter 加上 mathjax: true
per_page: true

官方文档中给的per_pagefalse,但是如果公式使用较多的话,建议改为true

安装插件

在根目录执行

1
2
$ npm uninstall hexo-renderer-marked --save
$ npm install hexo-renderer-kramed --save

修改项目配置文件

修改项目根目录_config.yml文件,在最后新增

1
2
3
4
5
6
7
8
kramed:
gfm: true
pedantic: false
sanitize: false
tables: true
breaks: true
smartLists: true
smartypants: true

效果

当输入以下内容

1
2
3
4
5
$$
a^2+b^2=c^2
$$

这个$$e^{ix}=cosx+isinx$$是欧拉公式。

得到结果

效果演示

GitHub Actions自动部署

为保护代码安全,将blog源代码与生成的html文件存放在不同的仓库。

具体步骤可参考使用Github Actions自动部署Hexo博客_github action hexo_Yetta Daisy的博客-CSDN博客

代码上传到github

另外新建一个仓库,可以将仓库设置为private,将代码文件同步到仓库。

本地根目录运行

1
$ ssh-keygen -f github-deploy-key

当前目录下会有 github-deploy-keygithub-deploy-key.pub 两个文件。

GitHub 密钥配置

复制 github-deploy-key 文件内容,在 blog 仓库 Settings ->Actions secrets and variables -> Actions 页面上添加。

在 Name 输入框填写 HEXO_DEPLOY_PRI。
在 Value 输入框填写 github-deploy-key 文件内容。

设置HEXO_DEPLOY_PRI

注意:接下来前往你的GitHub Page的仓库!!

复制 github-deploy-key.pub 文件内容,在 your.github.io 仓库 Settings -> Deploy keys -> Add deploy key 页面上添加。

在 Title 输入框填写 HEXO_DEPLOY_PUB。
在 Key 输入框填写 github-deploy-key.pub 文件内容。
勾选 Allow write access 选项。
设置HEXO_DEPLOY_PUB

GitHub Actions配置

选择Actions,新建一个workflow。

创建workflow

新建deploy.yml,内容可参考:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
name: CI

on:
push:
branches:
- master

env:
GIT_USER: # GitHub用户名
GIT_EMAIL: # GitHub邮箱
THEME_REPO: jerryc127/hexo-theme-butterfly
THEME_BRANCH: master
DEPLOY_REPO: # GitHub仓库,对应的是: GitHub用户名/GitHub用户名.github.io
DEPLOY_BRANCH: master

jobs:
build:
name: Build on node ${{ matrix.node_version }} and ${{ matrix.os }}
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu-latest]
node_version: [18.x]

steps:
- name: Checkout
uses: actions/checkout@v2

- name: Checkout deploy repo
uses: actions/checkout@v2
with:
repository: ${{ env.DEPLOY_REPO }}
ref: ${{ env.DEPLOY_BRANCH }}
path: .deploy_git

- name: Use Node.js ${{ matrix.node_version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node_version }}

- name: Configuration environment
env:
HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}}
run: |
sudo timedatectl set-timezone "Asia/Shanghai"
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name $GIT_USER
git config --global user.email $GIT_EMAIL
# cp _config.theme.yml themes/concise/_config.yml

- name: Install dependencies
run: |
npm install
npm install --save hexo-deployer-git

- name: Deploy hexo
run: |
npm run deploy

结果

部署完成后,即可自动运行部署。

每当GitHub仓库有更新,blog静态页面也会自动更新内容。

blog代码仓库:

blog代码仓库

blog执行actions:
blog执行actions

博客内容仓库更新:

博客内容仓库更新

博客内容更新:

博客内容更新