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 -d
与 hexo d -g
命令的意义相同:让
Hexo 在生成静态文件后立即部署网站。
clean
使用 hexo clean
命令清除所有缓存文件
(db.json
) 与已生成的静态网页 (public 文件夹)。
当发现本地更改不生效时,常 hexo clean
后
hexo g
刷新所有的静态网页文件。
一个典型的发布新文章过程:
hexo new post "hello-hexo"
新建 post,对source/_post
中的对应 markdown 源码进行编辑。hexo g
生成静态网页文件。hexo s --debug
启动服务器,并访问https://localhost:4000/
预览查看本地的更改是否成功应用。若发现更改未生效,hexo clean
后hexo g
重新生成所有的静态网页文件。重复该步骤,找到问题直至预览到本地更改生效。hexo d
部署网站,此时 post 将在[username].github.io
网址上发布。
Front-matter
Front-matter 是 markdown 源码最上方以 ---
分隔的区域,其规定了这个网页的各项属性。
例:
1 | --- |
注意,这其中的一些 field 并不是默认的,而是在安装了对应的插件后实现的功能。
实现的过程就不一一介绍了,网上大把教程。
tags and categories
在启用这两个 fields 之前,需要启用自定义页面 (custom pages) tags 与 categories,之后就可以为文章添加 tags 与 categories 了。
注意对同一篇文章,tags 的关系是平行的,categories 的关系是树形的。
如上例,文章 Hexo study notes
的 tags 是
hexo
与 blog
,其所属的类别是
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
)。