Hexo 搭建个人博客
Hexo是一款快速、简洁且高效的静态博客框架,使用Markdown渲染引擎解析文章,拥有着丰富的主题社区,可以帮助我们快速建立自己的博客,正在成为越来越多的技术人员制作自己博客的首选。
我选用了Hexo+github的博客部署模式,博客地址为:https://shuzang.github.io
开始使用
Hexo使用Node.js编写,安装之前需要先安装两个工具
- Node.js,版本不低于8.6,建议10.0以上
- Git
我在win10环境下管理和部署博客,因此使用windows下的包管理工具chocolate安装git和nvs,然后使用nvs安装和管理Node.js,默认会安装最新的软件版本,当然也可以自己指定版本号。
|
|
以上程序安装完成后,使用npm安装Hexo
|
|
此时即可执行以下命令建立博客
|
|
当前hexo_blog文件夹的目录结构如下
|
|
_config.yml是网站的配置 信息,以YAML语言编写,在此可以配置大部分的参数。
在根目录下执行如下命令启动 hexo 的内置 Web 服务器
|
|
该命令将会调用 Markdown 引擎解析项目中的博客内容生成网页资源,并启动一个简易的 Web 服务器用于提供对内存中网页资源的访问,Web 服务器默认监听 4000 端口,用户可在浏览器中通过地址 localhost:4000
访问博客。
其它的常用命令如下:
hexo new [layout] <title>
:新建文章或页面,[layout]
表示模板,<title>
表示标题,比如hexo new post 001
,表示新建了一个标题为001
的文章hexo new page 001
,表示新建了一个标题为001
的页面
hexo generate
:生成网站静态文件,生成后的网页会放在根目录下public
文件夹里hexo deploy
:部署网站,可以把生成的页面(public文件夹内容)部署到指定地方hexo clean
:用来清空public
文件夹
更换Chic主题
Chic主题是一款比较简洁的主题,虽然用的人不多,但基本功能都有,同时也避免出现大家博客页面都一样的尴尬。
在根目录下执行如下命令下载主题文件
|
|
打开站点配置文件_config.yml
将theme
字段的值改为Chic
|
|
重新执行hexo server
命令,打开浏览器进入http://localhost:4000/页面
1. 站点配置
主要编辑根目录和主题目录下的两个_config.yml
文件进行站点的相关配置,注意每个字段的冒号与值之间需要间隔一个空格,修改完成后需要重新执行hexo server
命令
网站基本信息
根目录下的_config.yml
文件
|
|
主题目录下的_config.yml
文件
|
|
头像
将自己的头像命名为avatar.png
,放在主题目录下的source/image
文件夹内,并在主题配置文件中设置如下
|
|
网站 favicon
通过favicon generator 网站生成favicon.ico作为网站favicon,放在主题目录下的source
文件夹内,替换原来的图标
社交链接
主题配置文件中,只开启github和RSS的链接,主题本身不支持RSS,之后我们按照其它插件开启,这里先显示图标
|
|
copyright
主题配置文件中,取消显示文章末尾copyright中的slogan
|
|
MathJax支持
主题本身支持数学公式,在主题配置文件中开启
|
|
demand和global为mathjax的加载方式,global会在所有页面都加载,但可能导致部分markdown语法被错误解析,demand则只需要在需要开启支持的文章Front-matter中声明即可
|
|
中英文间自动添加空格
在主题配置文件的# Writing
部分添加如下字段
|
|
执行hexo g
命令重新生成页面
2. 添加菜单栏其它页面
主要指标签和分类页面,豆瓣电影和图书页面
Tag、Category、About页面
根目录下执行新建页面命令
|
|
进入source/tag
目录,为index.md
文件增加layout字段
|
|
category和about页面同理,layout字段值为category和about
豆瓣电影和图书页面
为站点添加豆瓣电影和图书页面,使用模块hexo-douban完成,首先根目录下执行下列命令安装该模块
|
|
在站点配置文件中添加以下内容,不需要游戏页面,所以注释掉了
|
|
在主题配置文件中新增电影和书籍页面的入口,注意顺序,要放在About字段前,因为这决定了菜单栏的显示顺序
|
|
然后在根目录下执行下列命令生成电影和图书页面
|
|
可选参数
- -b | –books: 只生成豆瓣读书页面
- -m | –movies: 只生成豆瓣电影页面
执行命令后,插件会根据用户提供的 ID 爬取豆瓣中的数据信息并在 public
目录下生成对应的页面,当服务器启动或部署后会将页面显示在对应的菜单路由下。
需要隔一定周期执行一次hexo douban
命令,虽然在站点配置中设置了 douban.builtin: true
会在每次部署时自动执行hexo douban
命令,但这是没有必要的,因为该命令爬取页面的时间比较长,会大幅增加编译打包时间,而我们豆瓣的图书和电影数据变动则并不频繁。
同时,以后也无法使用hexo d
作为hexo deploy
的简化,因为hexo douban
的简化也是它。
最后,实际运行时,这两个页面总要弹出about:blank#blocked的空页面,暂时没有找到原因
3. 其它细节改进
对整个网站的一些细节做调整
页脚显示站点运行时间
首先在站点配置文件中新增since
字段,设置其值为站点建立时间
|
|
然后打开themes/Chic/layout/_partial/footer.ejs
文件,修改其内容为
|
|
修改文章建立时间格式
打开themes/Chic/layout/_partial/post.ejs
文件,修改以下内容
|
|
删除其中关于具体每天几点几分几秒的显示
|
|
开启RSS
在站点根目录下安装hexo-generator-feed
模块
|
|
在站点配置文件中添加以下内容启用插件,注意放到#Extensions
字段后面
|
|
在主题配置文件的社交链接部分更改RSS的值,我们之前已经启用了图标
|
|
执行hexo g
命令生成atom.xml文件,然后就启用了
支持mermaid
安装模块hexo-filter-mermaid-diagrams
|
|
在站点配置文件中添加如下内容
|
|
在themes/Chic/layout/_partial/footer.ejs
文件中添加如下内容
|
|
使用和普通代码相同,只是要声明为mermaid格式
部署博客
我选择了部署到github,主要使用了github pages功能
在github网站创建一个新的公开仓库hexo_blog
在仓库页面选择
Settings——>Options——GitHub Pages——>Source
,在下拉列表中选择master branch,选择Save,生成一个GitHub pages网址,这就是我们的网站域名了安装部署插件
1 2
$ npm install hexo-deployer-git --save $ npm install hexo-server --save
如果这台电脑第一次安装使用git,还需要配置git,但不属于本文范畴
配置
_config.yml
文件以下几部分1 2 3 4 5 6 7 8 9 10 11
# URL ## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' url: https://github.com/shuzang/hexo_blog root: /hexo_blog/ # Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: type: git repo: git@github.com:shuzang/hexo_blog.git branch: master
这时候就已经万事俱备了,只要使用Hexo部署命令,就可以成功发布到Github
|
|
项目恢复
hexo+github模式的个人博客部署好了之后,hexo_blog文件夹中存在大量的文件,不仅仅是各种配置,还有我们所写的文章。在操作过程中,可能面对两种情况:
- 系统崩溃,所有文件丢失
- 要换电脑了
所以我们应未雨绸缪,经多方查找,终于找到了一种比较简单而有效的方法,即使用Travis CI做持续集成,项目文件放在hexo
分支下,渲染后的静态文件在master
分支下,只需要更新hexo
分支中的文章就可以自动更新,进行配置也只需要克隆hexo
分支然后进行改动,不需要每次都重新hexo init
并配置
主题收集
参考
[2] 简书-Hexo博客配置RSS插件
[3] NPM-hexo-filter-mermaid-diagrams
[5] hexo和next主题相关设置