Hexo命令详解

1. 背景介绍

本文主要讲解 hexo cli 的使用和详细信息,以及相关示例.

2. Hexo 项目初始化

初始化项目(博客网站), 可以使用 init 命令

1
$hexo init [folder]

说明:

  • 用于新建一个网站。
  • 如果没有设置 folder ,Hexo 默认在当前的文件夹建立网站。
  • 本命令相当于执行了以下几步:
    Git clone hexo-starterhexo-theme-landscape 主题到当前目录或指定目录.
    使用 Yarn 1、pnpm 或 npm 包管理器下载依赖(如有已安装多个,则列在前面的优先)。npm 默认随 Node.js 安装, nodejs 安装可以参考安装并配置 nodejs
  • 延伸阅读我的博客使用 Hexo 搭建自己的博客网站

3. Hexo new 命令

1
hexo new [layout] <title>

新建一篇文章。如果没有设置 layout 的话,默认使用 _config.yml 中的 default_layout 参数代替。
这里 layout 在很多文章中都翻译成布局似乎不能反应它在上下文中的意思,查了一下词典,它还有一个意思叫版面,更贴切一些,版面在汉语中的意思如下

版面是一个印刷词汇,指印刷好的页张,包括图文、余白整个部分。

Hexo 有三种默认版面:post、page 和 draft,它们分别对应不同的路径,而您自定义的其他版面和 post 相同,都将储存到 source/_posts 文件夹。
这里的 title 是必须指定的,如果标题包含空格的话,请使用引号括起来。例如:

1
$hexo new "post title with whitespace"

new 指令还有一些选项可供使用

参数描述
-p, –path自定义新文章的路径
-r, –replace如果存在同名文章,将其替换
-s, –slug文章的 Slug,作为新文章的文件名和发布后的 URL

说明:

  • 这里的 slug 也是印刷术语,而且是上一代印刷术铅字印刷术中的一个术语,意为铅字条,即把单个铅字组成一长条,其用途百度了很久也不知道和这里的文件名有何联系,如果知道的欢迎在原文下面留言.
  • 默认情况下,Hexo 会使用文章的标题来决定文章文件的路径。对于独立页面来说,Hexo 会创建一个以标题为名字的目录,并在目录中放置一个 index.md 文件。你可以使用 –path 参数来覆盖上述行为、自行决定文件的目录:
1
hexo new page --path about/me "About me"

以上命令会创建一个 source/about/me.md 文件,同时 Front Matter 中的 title 为 “About me”

  • 注意!title 是必须指定的!如果不指定 title, 例如在下面的例子中:

    1
    hexo new page --path about/me

    此时 Hexo 会创建 source/_posts/about/me.md,同时 me.md 的 Front Matter 中的 title 为 “page”。这是因为在上述命令中,hexo-cli 将 page 视为指定文章的标题、并采用默认的 layout。相信这往往不是人们所期望的.

4. 发表草稿

相信看了 Hexo new 命令的讲解后,一定还有一个疑惑,如果使用hexo new draft "xxx title"创建了一篇草稿文章后,如果完成了文章打算发表怎么办,难道要手动的创建 post 和 page 再 copy 过去,阅读了这一节,相信大家会有更好的选择,那就是使用 publish 命令.这里吐槽一下这个命令,publish 往往隐含地意味着将文章发表到网站面向公众,而这里实际的行为是将文章由草稿状态,转变为可发表状态,中间还有校对,部署等一系列动作,其实离发表还是有一段距离.其实此命令更多的是移动文件夹,转变状态,还不如 move 或 transfer, 因为 publish 让人一下子处于一种紧张的临战状态,如果不去深入了解它实际会干什么,往往不敢轻易使用.

1
hexo publish [layout] <filename>

说明,这里的 layout  可以是 post 或者 page, 文件名必须指定.

5. 生成静态文件

生成静态文件使用如下命令

1
2
3
$ hexo generate
# 或者简写形式
$ hexo g

可用选项
| 选项 | 描述 |
| :—- | :—- |
| -d, –deploy | 文件生成后立即部署网站 |
| -w, –watch | 监视文件变动 |
|-b, –bail | 生成过程中如果发生任何未处理的异常则抛出异常 |
| -f, –force | 强制重新生成文件 Hexo 引入了差分机制,如果 public 目录存在,那么 hexo g 只会重新生成改动的文件。使用该参数的效果接近 hexo clean && hexo generate |
| -c, –concurrency | 最大同时生成文件的数量,默认无限制 |

6. 本地启动网站

1
2
3
hexo server
# 或者简写形式
hexo s

启动服务器。默认情况下,访问网址为: http://localhost:4000/
| 选项 | 描述 |
| —- | —- |
| -p, –port | 重设端口 |
| -s, –static | 只使用静态文件 |
| -l, –log | 启动日记记录,使用覆盖记录格式 |

7. 部署

1
2
3
4
$ hexo deploy
# 或者简写形式
$ hexo d

部署网站。部署之前还有一些准备工作,请参考我的博客文章使用 Hexo 搭建自己的博客网站.

参数描述
-g, –generate部署之前预先生成静态文件

8. render 渲染文件

1
$hexo render <file1> [file2] ...

渲染文件。

参数描述
-o, –output设置输出路径

9. 从其他博客系统移植博客

1
$hexo migrate <type>

从其他博客系统 迁移内容, 目前支持从 RSS,Jekyll, Octopress, WordPress, Joomla, 具体如何移植,请参考这篇文章迁移

10. clean

1
$hexo clean

清除缓存文件 (db.json) 和已生成的静态文件 (public)。

在某些情况(尤其是更换主题后),如果发现您对站点的更改无论如何也不生效,您可能需要运行该命令。

11. list

1
hexo list <type>

列出网站资料。类型有 page, post, route, tag, category.

12. version

1
hexo version

显示 Hexo 版本。

13. 选项

13.1. 安全模式

1
hexo --safe

在安全模式下,不会载入插件和脚本。当您在安装新插件遭遇问题时,可以尝试以安全模式重新执行。

13.2. 调试模式

1
hexo --debug

在终端中显示调试信息并记录到 debug.log。当您碰到问题时,可以尝试用调试模式重新执行一次,并 提交调试信息到 GitHub。

13.3. 简洁模式

1
hexo --silent

隐藏终端信息。

13.4. 自定义配置文件的路径

1
2
3
4
5
# 使用 custom.yml 代替默认的 _config.yml
$ hexo server --config custom.yml

# 使用 custom.yml 和 custom2.json,其中 custom2.json 优先级更高
$ hexo generate --config custom.yml,custom2.json,custom3.yml

自定义配置文件的路径,指定这个参数后将不再使用默认的 _config.yml。
你可以使用一个 YAML 或 JSON 文件的路径,也可以使用逗号分隔(无空格)的多个 YAML 或 JSON 文件的路径。例如:

1
2
3
4
5
# 使用 custom.yml 代替默认的 _config.yml
$ hexo server --config custom.yml

# 使用 custom.yml, custom2.json 和 custom3.yml,其中 custom3.yml 优先级最高,其次是 custom2.json
$ hexo generate --config custom.yml,custom2.json,custom3.yml

当你指定了多个配置文件以后,Hexo 会按顺序将这部分配置文件合并成一个 _multiconfig.yml。如果遇到重复的配置,排在后面的文件的配置会覆盖排在前面的文件的配置。这个原则适用于任意数量、任意深度的 YAML 和 JSON 文件。

13.5. 显示草稿

1
hexo --draft

显示 source/_drafts 文件夹中的草稿文章。

13.6. 自定义 CWD

1
hexo --cwd /path/to/cwd

自定义当前工作目录(Current working directory)的路径。

14. 相关阅读

使用 Hexo 搭建自己的博客网站

Hexo 命令详解

Hexo 博客添加评论功能

Hexo 配置 Next 主题

Hexo 博客搜索引擎优化

15. 参考文档

Hexo 指令