Hexo 是一个快速、简洁且高效的博客框架,它使用 Markdown(或其他标记语言)解析文章,并能够在几秒内利用漂亮的主题生成静态网页。

参考文档:https://hexo.io/zh-cn/docs/

快速开始

创建一篇新博文

要创建一篇新文章或页面,请执行以下命令:

$ hexo new "My New Post"

启动本地服务

Hexo 3.0 将服务器作为一个单独的模块,需要先安装 hexo-server 才能使用。

$ npm install hexo-server --save

安装完成后,使用以下命令启动服务器,网站将在 http://localhost:4000 上运行。在服务器运行期间,Hexo 会监视文件变动并自动更新,无需重启服务器。

$ hexo server

如果需要更改端口或遇到 EADDRINUSE 错误,可以使用 -p 选项指定其他端口:

$ hexo server -p 5000

静态模式

在静态模式下,服务器仅处理public文件夹中的文件,并且不会监视文件变动。在使用静态模式时,应该先执行hexo generate命令。这通常用于生产环境(production mode)。

$ hexo server -s

自定义 IP

服务器默认运行在 0.0.0.0,可以通过-i指定ip地址:

$ hexo server -i 192.168.1.1

设置此参数后,您只能通过指定的 IP 地址访问站点。例如,对于使用无线网络的笔记本电脑,除了本地127.0.0.1地址外,通常还有一个192.168.*.*的局域网 IP 地址。如果使用-i参数指定了局域网 IP,那么无法通过公网 IP 来访问站点。

生成文件

使用 Hexo 生成静态文件快速而且简单。

$ hexo generate

监视文件变动

Hexo 可以监视文件变动并立即重新生成静态文件。在生成过程中,Hexo 会比对文件的 SHA1 校验和,只有发生变动的文件才会被写入。

$ hexo generate --watch

部署网站

执行以下任一命令,在生成完毕后自动部署网站,两个命令的作用是相同的。

$ hexo generate --deploy
$ hexo deploy --generate

简写

上面两个命令可以简写为 $ hexo g -d $ hexo d -g

Front-matter

Front-matter 是位于文件顶部的---分隔区域,用于指定特定文件的变量。例如:

---
title: Hello World
date: 2013/7/13 20:46:25
---

以下是预定义的参数,可以在模板中使用这些参数的值:

参数 描述 默认值
layout 布局 config.default_layout
title 标题 文章的文件名
date 建立日期 文件建立日期
updated 更新日期 文件更新日期
comments 开启文章的评论功能 true
tags 标签(不适用于分页)
categories 分类(不适用于分页)
permalink 覆盖文章的永久链接,永久链接应该以 /.html 结尾 null
excerpt 纯文本的页面摘要。使用 该插件 来格式化文本
disableNunjucks 启用时禁用 Nunjucks 标签 {{ }}/{% %} 和 标签插件 的渲染功能 false
lang 设置语言以覆盖 自动检测 继承自 _config.yml

布局

根据 _config.ymldefault_layout 的设置,默认布局是 post 。当文章中的布局被禁用(layout: false),它将不会使用主题处理。然而,它仍然会被任何可用的渲染引擎渲染:如果一篇文章是用 Markdown 写的,并且安装了 Markdown 渲染引擎(比如默认的 hexo-renderer-marked),它将被渲染成 HTML。

除非通过 disableNunjucks 设置或 渲染引擎 禁用,否则无论布局如何,标签插件 总是被处理。

分类和标签

只有文章支持分类和标签,您可以在 Front-matter 中设置。在其他系统中,分类和标签听起来很接近,但是在 Hexo 中两者有着明显的差别:分类具有顺序性和层次性,也就是说 Foo, Bar 不等于 Bar, Foo;而标签没有顺序和层次。

categories:

- Diary tags:
- PS3
- Games

分类方法的区别

如果您有使用 WordPress 的经验,可能会误解 Hexo 的分类方式。WordPress 支持为一篇文章设置多个分类,并且这些分类可以是同级的,也可以是父子分类。但是在 Hexo 中,不能指定多个同级分类。下面的设置:

categories:
- Diary
- Life

将会使Life成为Diary的子分类,而不是同级分类。因此,选择最准确的分类很重要。

如果需要为文章添加多个分类,可以尝试以下列表中的方法:

categories:
- [Diary, PlayStation]
- [Diary, Games]
- [Life]

这样,这篇文章将同时包含三个分类:PlayStationGamesDiary的子分类,而Life是一个没有子分类的分类。

JSON Front-matter

除了 YAML,也可以使用 JSON 来编写 Front-matter,只需将---替换为;;;即可。

"title": "Hello World",
"date": "2013/7/13 20:46:25"
;;;