最近打算把散落各地的文章汇聚过来,使用 GitHub Pages、Hexo 和 NexT 主题搭建 Blog,简单记录一下折腾过程,以备后用。
简介
Hexo:快速、简洁且高效的博客框架;
NexT:一款风格优雅的高质量 Hexo 主题,自点点滴滴中用爱雕琢而成。
主要采用以上两个开源产品及其插件进行 Blog 开发,方案比较成熟,新版 Next 主题可配置性比之前高,用法与之前有些出入。
Hexo 安装
环境配置
计划安装目前最新版 Hexo,所以需要安装 10.13.0
以上的 Node.js;Git 无具体版本要求。
- 本地 Node.js 版本
v14.16.0
; - 本地 Git 版本
2.21.0.windows.1
。
Hexo 安装
- 全局安装 Hexo:
1 | npm install hexo-cli -g |
- 在 Blog 文件夹的父文件下执行初始化 Blog 命令:
1 | hexo init <fileName> |
<fileName>
是 Blog 的文件夹名,执行此命令后,在执行该命令的文件目录下,新建了一个名为 <fileName>
的文件夹,这个新建的文件夹是 Blog 站点的根文件,Blog 站点的根文件夹下的 _config.yml
是Hexo 配置文件。
- 进入上一步创建的文件夹:
1 | cd <fileName> |
- 安装 Hexo 相关依赖:
1 | npm install |
- 启动 Hexo 本地服务,测试是否成功:
1 | hexo server |
也可以用 hexo s
代替上面的命令。
这时命令行工具会出现:
1 | INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop. |
可以通过浏览器访问 http://localhost:4000
来观察是否安装成功。
Tips: 光标移到命令行工具,按住
ctrl
+C
,关闭本地服务器。
安装 Next 主题
方法一
- 进入
./themes
文件夹,执行:
1 | git clone https://github.com/theme-next/hexo-theme-next.git |
此时,在 ./themes
下应该会有一个 next
文件夹。
- 通过文件管理器进入
next
文件夹,删除.git
文件夹(这一步的目的是保证可以将个性化修改后的next
文件夹上传到 GitHub)。
方法二
下载在 NexT 的 Release 版本,并将下载的压缩包解压到 ./themes
下,此时 themes
文件夹下应该有一个 next
文件夹。
注意: 有两种方式可选,完成后,Blog 根文件夹下应该有一个
themes
文件夹,在themes
文件夹下有一个next
文件夹,在next
根文件夹下有若干个文件、文件夹。next
是主题根文件,主题根文件下的_config.yml
是主题配置文件。
验证
修改 Hexo 配置文件:
1 | - theme: landscape |
在 Blog 根文件夹下,执行:
1 | hexo clean |
在浏览器访问本地服务器地址,查看是否已经成功更换主题。
配置与美化
修改基本配置
可按 Hexo 官方配置文件说明 对 Hexo 配置文件进行配置。
语言配置
如果预览时发现网站出现非中文,可按以下两种方式进行配置:
1 | - language: en |
Bug 修复
主题会有一些 Bug,记录一下打补丁方法。
中文文章 Toc 无法跳转
在 Hexo 更新至 5.x 版本,Next 更新至 7.x 版本后,会出现文章的中文目录点击跳转失效的 bug。
中文文章目录(TOC)点击可能跳转失败,NexT 官方已经给出了修复方法。
下面记录一下:
1 | const sections = [...navItems].map(element => { |
其他配置与美化
站内搜索
在站点根文件夹下,执行:
1 | npm install hexo-generator-searchdb --save |
在 Hexo 配置文件末尾添加:
1 | + search: |
将 NexT 主题配置文件 local_search
项目修改如下:
1 | local_search: |
local_search
的其他配置项可根据注释修改。
添加 rss
在站点根文件夹下,执行:
1 | npm install hexo-generator-feed --save |
在 Hexo 配置文件末尾添加:
1 | + # Extensions |
在 NexT 主题配置文件,给配置项 social
添加 rss: atom.xml || rss
:
1 | social: |
rss
在 social
中的顺序会影响实际图标的顺序。
文末版权说明配置
在 NexT 主题配置文件,将配置项 creative_commons
的 post
修改为 true
:
1 | creative_commons: |
修改 /themes/next/layout/_partials/post/post-copyright.swig
文件:
1 | + {% if page.copyright %} |
在 post
模板中增加 copyright
这一配置项:
1 | + copyright: false # 是否开启版权声明,true 是; false 否。 |
配置标签、分类、归档、关于页面
配置标签页面
在 Blog 根文件夹下执行:
1 | hexo new page tags # 新建“标签”页面 |
在主题配置文件对 menu
进行配置:
1 | menu: |
修改 tags 页面:
1 | --- |
在 post
模板中增加 tags
这一配置项:
1 | + tags: # 标签 |
配置分类页面
在 Blog 根文件夹下执行:
1 | hexo new page categories # 新建“分类”页面 |
在主题配置文件对 menu
进行配置:
1 | menu: |
修改 categories 页面:
1 | --- |
在 post
模板中增加 categories
这一配置项:
1 | + categories: # 分类 |
配置归档页面
默认已经开启,如果没有按以下方式配置:
在 Blog 根文件夹下执行:
1 | hexo new page archives # 新建“归档”页面 |
在主题配置文件对 menu
进行配置:
1 | menu: |
修改 archives 页面:
1 | --- |
配置关于页面
在 Blog 根文件夹下执行:
1 | hexo new page about # 新建“关于”页面 |
在主题配置文件对 menu
进行配置:
1 | menu: |
修改 about 页面:
1 | --- |
后面可以增加其他希望在“关于”页面添加的内容。
调整菜单排列顺序
在主题配置文件对 menu
进行配置,调整各项目的顺序:
1 | menu: |
增加顶置功能
在页面增加 sticky: 0
即可,0
代表不顶置,可以将 0
替换成其他数字,数字越大,权重越大,排名越靠前。
可以在 post
模板,增加 sticky
这一配置项。
1 | sticky: 0 |
首页折叠配置
NexT 主题自带 2 种首页折叠方式:
- 配置
description
项目:
1 | + # description: XXXXXXXXXXX # 折叠简介 |
XXXXXXXXXXX
将作为简介显示在首页,其他内容将折叠,点击 阅读全文》
,才能了解更多文章内容。
- 在正文增加
<!-- more -->
, 前面的正文将作为简介显示在首页,其他内容将折叠,点击阅读全文》
,才能了解更多文章内容。
配置 post
模板:
1 | --- |
GitHub 部署
如果托管在 GitHub Pages。
有两种方式访问 GitHub 的 GitHub Pages,这两种方式体现在 URL 的不同:https://username.github.io/
和 https://username.github.io/ProjectName/
,其中 username
自己的是用户 id,ProjectName
是项目名。
注册 GitHub 账号
过程略。
建立 GitHub 远程仓库
如果把 https://username.github.io/
作为 Blog 首页地址,则将仓库命名 username.github.io
,其中 username
是自己的用户 id,无法修改。
如果把 https://username.github.io/ProjectName/
作为 Blog 首页地址,则将仓库命名 ProjectName
,其中 username
是自己的用户 id,无法修改。
注意: 远程仓库应该不含任何文件、文件夹。否则后续处理会有些麻烦。
配置 ssh
为了避免处理每次都推送都需要输入账号、密码,这里需要配置 ssh。本地已经配置过的,这里就不用配置了。具体过程略。
网址配置
- 如果把
https://username.github.io/
作为 Blog 首页地址,则在 Hexo 配置文件设置:
1 | # URL |
- 如果把
https://username.github.io/ProjectName/
作为 Blog 首页地址则,在 Hexo 配置文件设置:
1 | # URL |
Hexo 命令部署配置
- 如果把
https://username.github.io/
作为 Blog 首页地址,则在 Hexo 配置文件设置:
1 | # Deployment |
- 如果把
https://username.github.io/ProjectName/
作为 Blog 首页地址,则在 Hexo 配置文件设置:
1 | # Deployment |
注意: 实现 GitHub Pages 部署的原理是,将本地渲染好的静态文件(
/public
文件夹内所有文件)以一个单独分支上传到 GitHub 远程仓库,GitHub Pages 服务渲染该分支的静态文件。这里branch
配置了 GitHub Pages 将要渲染的gh-pages
分支。
本地 Git 仓库配置与推送
本步骤的意义在于,切换电脑依然可以写 Blog,不用担心因为本地文件丢失,而无法继续创作。
在 Blog 站点的根文件夹执行:
- 初始化本地 Git 仓库:
1 | git init |
- 修改分支名称(现在许多仓库分支在去
master
化,如果需要将主分支修改为main
可以执行下面的命令):
1 | git checkout -b main |
执行 git branch -a
可以查看目前所有的分支。
- 添加远程仓库;
1 | git remote add <remoteName> <sshURL> |
<remoteName>
是远程仓库名,一般设为origin
;sshURL
是远程仓库的 ssh 链接。
- 将本地项目分支推送到远程 GitHub 仓库。
1 | git add . |
<remoteName>
是前面设定的远程仓库名;<branchName>
是本地仓库分支名。
推送静态文件到远程仓库
在 Blog 根文件夹下执行:
- 生成静态文件,并在本地服务器预览:
1 | hexo clean |
在浏览器访问本地服务器地址,查看是否正常,ctrl
+ C
关闭本地服务器。
- 将本地生成的静态文件上传到 GitHub 远程仓库:
1 | hexo d |
启动 GitHub Pages 服务
GitHub 项目主页、Settings -> Pages -> Source:
选择 gh-pages
作为渲染分支(Branch
);渲染文件夹选择 /(root)
;保存(Save
)。
保存后,GitHub 将给出提示:
Your site is published at https://username.github.io/ProjectName/
或者
Your site is published at https://username.github.io/
点击上面的地址,即可访问项目(有时需要等待 15 分钟左右)。
创建一篇文章
在 Blog 根文件夹下执行:
- 创建文章文件
1 | $ hexo new "My New Post" |
更多请阅读 Writing
- 启动本地服务预览
1 | $ hexo server |
更多请阅读 Server
- 生成静态文件
1 | $ hexo generate |
更多请阅读 Generating
- 部署到远程服务器
1 | $ hexo deploy |
更多请阅读 Deployment
参考资料