我们在使用hexo初始化一个项目的时候,在根目录下会有一个配置文件_config.yml,这个文件配置了所写博客里面的内容,我们从根目录的该文件来说明每个配置的作用
头注释
_config.yml文件在头部会有一些注释,Hexo Configuration下的两行表示hexo文档的相关文档,Docs指的是hexo的文档,Source指的是hexo的GitHub源码,方便供他人参考查阅
1 | # Hexo Configuration |
博客网站相关
Site下面是网站相关的一些信息配置
1 | # Site |
title:网站的名字,会写在hexo generator命令生成后的public文件夹下的index.html文件的title标签里,作为你个人博客网站的标题,我们也可以在主题的首页左下角找到
subtitle:网站的副标题,生成的时候默认为空,一般会出现在你主标题的下面,也就是大约在背景图中间
description:主要用于SEO,告诉搜索引擎一个关于站点的简单描述,在官方文档中建议在这段描述中增加自己的一些关键词
keywords:网站的关键词,使用半角逗号分隔开多个关键词,对SEO的优化有一定的作用
author:顾名思义就是作者,这个也只是署个名而已,不会显式的看到
language:这里就写了网站使用的语言
timezone:网站对应的时区,一般情况下不用去刻意配置,会默认使用电脑的时区,但如果发布到其他地方的服务器,可能会使用当地服务器的时区,一般中国的时区可以设置为Asia/Shanghai或者北京
博客网址相关
1 | # URL |
url:指定博客的完整域名或 URL
地址。当你将博客部署到互联网上时,访问者需要通过这个地址来访问你的博客,要确保
url
地址准确无误,不然可能会导致博客内的链接(如文章内的图片链接、页面跳转链接等)无法正常访问
root:网站的根目录,指定博客在域名下的根目录,如果你的博客是直接部署在域名的根目录下,就将
root
设置为
/
;若博客部署在域名的子目录下,比如部署在
http://example.com/blog
下,那么就需要把 root
设置为 /blog/
。正确设置 root
很重要,不然会影响博客内资源(如 CSS、JavaScript
文件等)的加载路径。
permalink:文章的永久链接格式,一般是格式化日期字符串,可以在permalink这里配置,如默认中的配置,在hello world文章中就会是这样的url
当使用Font-matter中的值配置的时候(文章格式标签),可选的值有
permalink_defaults:设置永久链接的默认值。当你在文章的 Front - Matter(文章开头的元数据部分)中没有对某些永久链接相关的变量进行设置时,就会使用这里定义的默认值。不过在示例中,没有具体设置默认值,所以会采用 Hexo 的默认配置。
pretty_urls:就是如注释那样
目录相关
1 | # Directory |
source_dir:存放hexo文章的文件夹,我们写的md文件都放在这个配置对应的文件夹下,默认值是source
public_dir:存放hexo g生成的文件,执行hexo g后根目录就会出现这个文件夹,默认值是public
tag_dir:按标签存放文章的目录,默认值是tags,如果我们给文章添加标签,使用hexo g时public文件夹下就会多出一个tags文件夹(根据我们的配置文件夹名不同)
archive_dir:归档文件夹,存放归档文件,默认值为archives
category_dir:分类文件夹,按分类存放的文件,和上面的tags一样,只要在文章中的Font-matter添加了categories就会在使用hexo g构造时出现相应的文件夹
code_dir:Include code 文件夹,source_dir 下的子目录,默认值为downloads/code
i18n_dir:国际化(i18n)文件夹,默认值:lang
skip_render:跳过指定文件的渲染,匹配到的文件将会被不做改动复制到public文件夹下,如果路径对应的是我们的文章,那会直接忽略掉该文章,我们这样设置来忽略掉hello-world.md文件
1 | skip_render: "_posts/hello-world.md" |
然后hexo g之后可见生成的文件夹只有一些基础的内容,没有和hello-world.md相关的东西
文章相关
1 | # Writing |
new_post_name:新文章的默认名称,我们是使用hexo new来构造文章的,生成的文章名就是通过这里配置的,默认为:title.md,也就是标题.md
default_layout:预设布局,指定你新建文章的布局,布局决定了文章在渲染时使用的模板,hexo
new可以创建三种文件,post/帖子,draft/草稿,page/页面,这里设置默认值在使用hexo
new就可以直接创建对应默认类型的文章,设置了post就等同于说在命令行执行hexo
new
titlecase:控制是否将文章标题转换为标题大小写格式。当设置为
true
时,文章标题会被转换为标题大小写(即每个单词的首字母大写);设置为
false
则不进行转换,保持标题的原始大小写。
external_link:
- enable:控制是否在新标签页中打开外部链接。设置为
true
时,文章中的外部链接会在新标签页中打开;设置为false
则会在当前页面打开。 - field:指定外部链接设置的应用范围。
site
表示该设置应用于整个网站。 - exclude:指定不应用此外部链接设置的域名或路径。这里为空字符串,表示没有排除的域名或路径。
filename_case:控制文件名的大小写规则。取值为
0
时,文件名保持原始大小写;取值为 1
时,文件名转换为小写;取值为 2
时,文件名转换为大写。
render_drafts:控制是否渲染草稿文章。草稿文章通常存放在
source/_drafts
目录下。设置为 true
时,草稿文章会被渲染并显示在网站上;设置为 false
则不会渲染草稿文章。
post_asset_folder:是否启动资源文件夹,对于我们的网站,如果我们的文章里面有图片,我们可以在source文件夹下建立一个统一的images文件夹来存放图片,但是如果有的文章有很多的资源文件如图片,就可以设置为true,控制为每篇文章创建一个同名的资源文件夹。当设置为
true
时,使用 hexo new
命令创建文章时,会同时创建一个与文章同名的文件夹,用于存放该文章相关的图片、附件等资源;设置为
false
则不会创建。
relative_link: 控制是否使用相对链接。设置为
true
时,文章中的链接会使用相对路径;设置为
false
则使用绝对路径。
future:控制是否发布未来日期的文章。设置为
true
时,即使文章的发布日期设置为未来的某个时间,也会正常发布;设置为
false
则不会发布未来日期的文章。
highlight:代码高亮的显示
- enable:控制是否启用代码高亮功能。设置为
true
时,文章中的代码块会进行高亮显示;设置为false
则不进行高亮。 - line_number:控制是否显示代码块的行号。设置为
true
时,代码块会显示行号;设置为false
则不显示。 - auto_detect:控制是否自动检测代码块的语言。设置为
true
时,Hexo 会尝试自动检测代码块的语言;设置为false
则需要在代码块中手动指定语言 - table_replace:用n个空格来代表tab键,如果值为空,则不会代替tab键,这里为空字符串,表示不进行替换。
- warp:是否将代码放在table标签里,默认为true
- hljs:控制是否使用
highlight.js
进行代码高亮。设置为true
时,使用highlight.js
进行高亮;设置为false
则使用 Hexo 内置的高亮方式。
主页设置
1 | index_generator: |
index_generator:主页相关的设置
- path:主页对应的路径,默认为’’,即域名根目录就是主页的路径
- per_page:每页显示的帖子数,默认为10
- order_by:帖子的排序,默认为-date,即按日期倒序排
分类和标签
1 | # Category & Tag |
default_category:当你创建新文章时,如果没有在文章的
Front -
Matter(即文章开头的元数据部分)中明确指定文章的分类,那么这篇文章就会被自动归类到
default_category
所指定的分类中。在这个例子里,默认分类是
uncategorized
,也就是 “未分类”。
category_map:category_map
用于设置分类的别名。在实际写文章和管理博客的过程中,你可能会使用一个比较简洁或者容易输入的分类名,但在博客的展示页面上,你希望使用更正式、美观或者表意更清晰的名称。这时就可以通过
category_map
来实现分类名的映射。
例如:
1 | category_map: |
当你在文章的 Front - Matter 中使用 categories: [tech]
时,在博客的分类页面显示的分类名称将会是 “技术分享”,而不是
tech
。
tag_map:tag_map
的作用与
category_map
类似,不过它是用于设置标签的别名。在写文章时,你可能会使用一些简单的标签名,但在博客展示时,希望使用更合适的名称,就可以通过
tag_map
来进行映射。
元数据元素
1 | # Metadata elements |
是否在页面开头插入下面的meta标签,默认为true

日期和时间
1 | # Date / Time format |
date_format:日期格式,默认为YYYY-MM-DD,即年月日
time_format:时间格式,默认为HH:mm:ss,即时分秒
use_date_for_updated:启用以后,如果 Front Matter 中没有指定 updated(文件更新日期),post.updated 将会使用 date 的值而不是文件的创建时间,默认值为true
分页
1 | # Pagination |
per_page:分页时每页的文章数,如果为0则不分页,默认为10
pagination_dir分页的目录,默认为page,对应于public文件夹下的archives文件夹下的page文件夹,如果只有一页是不会生成这个文件夹的
包括或不包括目录和文件
1 | # Include / Exclude file(s) |
include:Hexo 默认会忽略隐藏文件和文件夹(包括名称以下划线和 . 开头的文件和文件夹,Hexo 的 _posts 和 _data 等目录除外)。通过设置此字段将使 Hexo 处理他们并将它们复制到 source 目录下。
exclude:Hexo 会忽略这些文件和目录
ignore:忽略的文件,要注意的是,这里要写入的是数组,而yaml的数组要用-值表示数组中一个元素或者直接采用js中数组的写法[]
主题
1 | # Extensions |
部署
1 | # Deployment |
hexo提供了快速方便的一键部署功能hexo deploy,但我们至少需要在_config.yml文件中的deploy中至少配置一个type,比如
1 | deploy: |
1 | deploy: |
参考内容:
部分内容转载自https://blog.csdn.net/zemprogram/article/details/104288872
hexo官方英文文档(有些中文文档没有的英文文档的才有)