怎么使用hexo建立个人博客
所需环境
安装
- 使用npm安装
Hexo
安装完成后,可以输入hexo --version
查看版本,确认是否安装
- 初始化Hexo
然后选择一个文件夹建立
或者建立一个文件夹cd <新文件夹>
然后
确定路径正确后,使用下面指令,安装所需的npm套件
完成后,进入文件夹可以看到下面的文件
如下图所示

_config.yml
- 有关网站配置的档案,可修改各种配置设定。 例如:网站标题、网站的网址、使用主题名称等等
- 详细内容可以参考官方文件
package.json
记录所有载入的应用程序资料,也就是专案中需要的所有模组。
scaffolds 模板
- 当我们建立新文章时,Hexo 会根据 scaffolds 中的模板建立相对应的档案
- 资料夹中有三种预设布局:post、page 和 draft,分别对应:要发布的文章、页面、草稿
themes 主题
- 用来存放主题的资料夹
- Hexo 会根据主题来解析 scouce 资料夹中的档案并产生静态页面。 预设主题为 landscape
source 资源
用来存放原始档案的地方,例如 Markdown 档、图片、各种页面(分页、关于等)
通常资料夹命名开头会加上底线
_
,例如_imgs
以
_
开头的档案、资料夹或隐藏档案会被忽略,除了_posts
资料夹以外Markdown 档和 HTML 档会被解析,并放到 public 资料夹,而其他档案则会被拷贝过去
source & public & .deploy_git 的差别
- 执行
$ hexo generate
之后,会将 scorce 文件夹中的 Markdown 档和 HTML 档进行解析,再结合主题进行渲染,生成我们看到的静态网站 - 执行
$ hexo deploy
之后,则会将 public 文件夹中的内容部署到 GitHub,并生成 .deploy_git 资料夹,因此内容与 public 几乎相同 - 这三者的关系可想成:
常用指令
接着介绍一些 Hexo 常会用到的相关指令语法,更多详细指令可参考官方文件。
new 新增文章
- 如果没有设定 layout,则会使用 _config.yml 中的 default_layout 来设定
- 如果标题有包含空格,需使用引号括住,例如
" title"
- 接着可直接到
/source/_posts/title.md
中编辑文章内容 - 档案名称尽量以英文命名,避免出现乱码
若是对 Markdown 相关语法不熟悉,可参考这篇笔记:Markdown 格式介绍
clean 清除静态档案与快取
在每次储存修正后的档案之前,会建议先输入此指令,清除快取档案 (db.json)和已产生的静态档案(public)。
generate 产生静态档案
可简写成 hexo g
,生成静态档案。
server 启动服务器
在本地端启动 Hexo 服务器,预设路径为:
http://localhost:4000/
可在自己电脑上预览设定结果,按 Ctrl + C 即可关闭
一种更简单的方法是
hexo d -g
,这也是我经常使用的
部署到Github
基本部署
在git bash输入ssh -T git@github.com,如果如下图所示,出现你的用户名,那就成功了。

然后,我们将hexo
与Github
关联起来,将Hexo上的文章部署到GitHub上,打开博客根目录下的_config.yml
文件,修改最后一行的配置:(如下)
repository
修改为你自己的github
项目地址即可,就是部署时,告诉工具,将生成网页通过git
方式上传到你对应的链接仓库中。
这个时候需要先安装deploy-git
,也就是部署的命令,这样你才能用命令部署到GitHub
。
命令如下:
之后使用命令将文章部署到Github

然后,你就可以在相应的域名找到你的博客了
别忘记在GitHub page页面开启网站
打开Settings

打开Page

更换为master
分支,点击save
,过一段时间就会出现https://carrollpolo.github.io 域名了

Icarus 主题自定义
本文是基于icarus 5.x的版本(4.x的版本差别不大)
布局
文章页面两栏布局
主题默认是三栏布局,在阅读文章时显得有些拥挤。可以通过配置的方式把所有文章变为两栏布局,在config.post.yml
把需要的widget显示在一边即可,可以参考官方文档。
但两栏整体宽度跟三栏不同,因此强制指定为三栏布局,并且修改相应的宽度,这样所有的页面侧边栏宽度保持一致。
在博客根目录,添加以下2个文件
_config.page.yml
_config.post.yml
都添加以下内容即可
1 | widgets: |
diff:layout/layout.jsx
如下
1 | <Head site={site} config={config} helper={helper} page={page} /> |
diff:layout/layout.jsx
如下
1 | 'is-12': columnCount === 1, |
diff:layout/common/widgets.jsx
如下
1 | function getColumnSizeClass(columnCount) { |
并优化在不同屏幕小大下的宽度
diff:include/style/responsive.styl
如下
1 | +widescreen() |
目录粘性定位
原来只支持侧边栏整体粘性定位,为了阅读体验,只针对目录开启粘性定位,增加 column-left is-sticky
类,并调整样式
diff:source/js/main.js
如下
diff:include/style/widget.styl
如下
默认显示目录
新版支持直接配置,在_config.yml
增加toc: true
即可