0%

Hexo 的配置

这里的配置是 Hexo 全局的配置,位于 Hexo 根目录的 _config.yml 文件中。

站点配置

配置 描述
title 网站标题
subtitle 网站副标题
description 网站描述
keywords 网站关键词,可以使用多个值(比如 yaml 的列表格式)
author 作者名字
language 网站语言。使用 两位字母的 ISO-639-1 编码 或者 它的变体。默认为en,中文为 zh-CN
timezone 网站时区。Hexo 默认使用电脑上设置的时区。你可以在 这里 找到支持的时区列表。一些例子比如:America/New_YorkJapanUTCAsia/Shanghai

URL

配置 描述 默认值
url 网站的 URL,必须以 http://https:// 开头
root 站点根目录
permalink 文章的 永久链接 格式。我一般只用 title :year/:month/:day/:title/
permalink_defaults 永久链接中每个部分的默认值
pretty_urls 永久链接 变量重写为更美观的 URL
pretty_urls.trailing_index index.html 结尾,若不想要它就将其设为 false true
pretty_urls.trailing_html .html 结尾,若不想要它就将其设为 false不适用于以index.html结尾 true

在子目录中的网站

如果你的网站在一个子目录中(比如 http://example.org/blog),把 url 设置为 http://example.org/blog,并把 root 设置为 /blog/

示例:

1
2
3
4
# 比如网页的永久链接为 http://example.com/foo/bar/index.html
pretty_urls:
trailing_index: false
# 就成了 http://example.com/foo/bar/

目录

配置 描述 默认值
source_dir 源码文件夹。你的内容存放的位置 source
public_dir 公共文件夹。你的静态网站生成的位置 public
tag_dir 标签文件夹 tags
archive_dir 归档文件夹 archives
category_dir 分类文件夹 categories
code_dir 内部代码文件夹(source_dir 的子文件夹) (subdirectory of source_dir) downloads/code
i18n_dir i18n 文件夹 :lang
skip_render 要原汁原味复制到 public 的文件夹。你可以使用 glob 表达式 匹配路径。

示例:

1
2
3
4
5
6
skip_render: "mypage/**/*"
# 会原封不动地输出 `source/mypage/index.html` 和 `source/mypage/code.js`。

## 这也可以用来排除发布的文件,
skip_render: "_posts/test-post.md"
# 将会忽略 `source/_posts/test-post.md`。

书写

配置 描述 默认值
new_post_name 新发布文件的文件名格式 :title.md
default_layout 默认布局 post
titlecase 是否将标题转换为标题首字母大写格式? false
external_link 是否在新标签中打开外部链接?
external_link.enable 是否在新标签中打开外部链接? true
external_link.field 适用于整个站点 site 还是仅适用于 post 文件夹 site
external_link.exclude 排除站点名。如果适用的话指明子域名,包括 www []
filename_case 将文件名转换为 1 小写;2 大写 0
render_drafts 是否展示草稿? false
post_asset_folder 是否启用 Asset 文件夹 false
relative_link 使用相对于根目录的相对链接? false
future 展示发表时间为未来的文件? true
highlight 代码块语法高亮设置,参见 Highlight.js 获得使用指南
prismjs 代码块语法高亮设置,参见 PrismJS 获得使用指南

首页设置

配置 描述 默认值
index_generator 生成发布文章的归档,由 hexo-generator-index 驱动
index_generator.path 博客首页的根路径 ''
index_generator.per_page 每页展示发表文章的数量 10
index_generator.order_by 展示顺序。默认以发布日期 date 降序排列(由新到旧) -date
index_generator.pagination_dir URL 格式,参见下面的 分页 page

分类 & 标签

配置 描述 默认值
default_category 默认分类 uncategorized
category_map 分类 slug
tag_map 标签 slug

日期 / 时间格式

Hexo 使用 Moment.js 处理日期。

配置 描述 默认值
date_format 日期格式 YYYY-MM-DD
time_format 时间格式 HH:mm:ss
updated_option 如果 front-matter 中没有指定的话,updated 使用的值 mtime

updated_option

updated_option 控制 updated 的值,如果 front-matter 没有指明的话:

  • mtime:使用文件修改日期作为 updated。这在 Hexo 3.0.0 以后是默认设置
  • date:使用 date 作为 updated。通常在 Git 工作流中使用,那种情况下文件修改日期可能会不同
  • empty:如果没有提供 updated 的话直接不要了。可能和很多主题和插件不兼容

use_date_for_updated 已经被弃用,将在下一个主版本中被移除。请使用 updated_option: 'date' 代替。

分页

配置 描述 默认值
per_page 每页展示发表文章的数量。0 禁用分页 10
pagination_dir URL 格式 page

示例:

1
2
3
4
5
pagination_dir: 'page'
# http://example.com/page/2

pagination_dir: 'awesome-page'
# http://example.com/awesome-page/2

扩展

配置 描述
theme 主题名称。false 禁用主题
theme_config 主题配置。包括要覆盖主题默认值的任何定制主题设置
deploy 部署设置
meta_generator Meta 生成器 标签。false 禁用注入此标签

包含 / 排除文件或文件夹

使用下面的选项明确指明要处理或忽略指定的文件 / 文件夹。支持 glob 表达式 匹配路径。

includeexclude 选项仅适用于 source/ 文件夹,而 ignore 适用于所有文件夹。

配置 描述
include 包含隐藏的文件(包括名字以一个下划线开头的文件 / 文件夹,有一个例外*)
exclude 排除文件 / 文件夹
ignore 忽略文件 / 文件夹

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 包含/排除文件/文件夹
include:
- ".nojekyll"
# 包含 'source/css/_typing.css'
- "css/_typing.css"
# 包含 'source/_css/' 中的全部文件
- "_css/*"
# 包含 'source/_css/' 中的全部文件和子文件夹
- "_css/**/*"

exclude:
# 排除 'source/js/test.js'.
- "js/test.js"
# 排除 'source/js/' 中的全部文件
- "js/*"
# 排除 'source/js/' 中的全部文件和子文件夹
- "js/**/*"
# 排除 'source/js/' 中全部文件名以“test”开头的文件
- "js/test*"
# 排除 'source/js/' 何其子文件夹中全部文件名以“test”开头的文件
- "js/**/test*"
# 不要使用这个排除 'source/_posts/' 中的发布文章
# 使用 skip_render 获得该效果。或者在其文件名前加下划线前缀
# - "_posts/hello-world.md" # 这是没有作用的

ignore:
# 忽略所有名为“foo”的文件夹
- "**/foo"
# 仅忽略“themes/”中的“foo”文件夹
- "**/themes/*/foo"
# 跟上面一样,不过也适用于“themes/”的所有子文件夹
- "**/themes/**/foo"

列表中的所有值都应包裹在单 / 双引号中。

include:exclude: 不适用于 themes/ 文件夹。要么使用 ignore: 或者在文件 / 文件夹的名称前加下划线前缀将其排除。

* 值得注意的例外是 source/_posts 文件夹,不过在该文件夹下名称以下划线开头的文件或文件夹仍然会被忽略。不建议在该文件夹中使用 include: 规则。

使用指定配置文件

可以在 hexo 命令中加入 --config 标识指明定制的配置文件路径,这个路径可以是一个 YAML 或 JSON 配置文件,或者是一个逗号分隔开的(无空格)多个 YAML 或 JSON 文件列表。

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

# 使用 'custom.yml' & 'custom2.json',优先使用 'custom2.json'
$ hexo server --config custom.yml,custom2.json

Using multiple files combines all the config files and saves the merged settings to _multiconfig.yml. The later values take precedence. It works with any number of JSON and YAML files with arbitrarily deep objects. 注意 列表中不允许有空格

For instance, in the above example if foo: bar is in custom.yml, but "foo": "dinosaur" is in custom2.json, _multiconfig.yml will contain foo: dinosaur.

指定主题配置

Hexo themes are independent projects, with separate _config.yml files.

Instead of forking a theme, and maintaining a custom version with your settings, you can configure it from somewhere else:

from theme_config in site’s primary configuration file

从 Hexo 2.8.2 版本起支持

1
2
3
4
5
6
7
8
9
10
11
# _config.yml
theme: "my-theme"
theme_config:
bio: "My awesome bio"
foo:
bar: 'a'
# themes/my-theme/_config.yml
bio: "Some generic bio"
logo: "a-cool-image.png"
foo:
baz: 'b'

上述配置等价于:

1
2
3
4
5
6
7
8
{
bio: "My awesome bio",
logo: "a-cool-image.png",
foo: {
bar: "a",
baz: "b"
}
}

from a dedicated _config.[theme].yml file

从 Hexo 5.0.0 版本起支持

The file should be placed in your site folder, both yml and json are supported. theme inside _config.yml must be configured for Hexo to read _config.[theme].yml

1
2
3
4
5
6
7
8
9
10
11
# _config.yml
theme: "my-theme"
# _config.my-theme.yml
bio: "My awesome bio"
foo:
bar: 'a'
# themes/my-theme/_config.yml
bio: "Some generic bio"
logo: "a-cool-image.png"
foo:
baz: 'b'

上述配置等价于:

1
2
3
4
5
6
7
8
{
bio: "My awesome bio",
logo: "a-cool-image.png",
foo: {
bar: "a",
baz: "b"
}
}

We strongly recommend you to store your theme configuration in one place. But in case you have to store your theme configuration separately, you need to know the priority of those configurations: The theme_config inside site’s primary configuration file has the highest priority during merging, then the dedicated theme configuration file.
The _config.yml file under the theme directory has the lowest priority.