我们在使用hexo初始化一个项目的时候,在根目录下会有一个配置文件_config.yml,这个文件配置了所写博客里面的内容,我们从根目录的该文件来说明每个配置的作用

头注释

_config.yml文件在头部会有一些注释,Hexo Configuration下的两行表示hexo文档的相关文档,Docs指的是hexo的文档,Source指的是hexo的GitHub源码,方便供他人参考查阅

1
2
3
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/

博客网站相关

Site下面是网站相关的一些信息配置

1
2
3
4
5
6
7
8
# Site
title: Hexo
subtitle: ''
description: ''
keywords:
author: John Doe
language: en
timezone: ''

title:网站的名字,会写在hexo generator命令生成后的public文件夹下的index.html文件的title标签里,作为你个人博客网站的标题,我们也可以在主题的首页左下角找到

subtitle:网站的副标题,生成的时候默认为空,一般会出现在你主标题的下面,也就是大约在背景图中间

description:主要用于SEO,告诉搜索引擎一个关于站点的简单描述,在官方文档中建议在这段描述中增加自己的一些关键词

keywords:网站的关键词,使用半角逗号分隔开多个关键词,对SEO的优化有一定的作用

author:顾名思义就是作者,这个也只是署个名而已,不会显式的看到

language:这里就写了网站使用的语言

timezone:网站对应的时区,一般情况下不用去刻意配置,会默认使用电脑的时区,但如果发布到其他地方的服务器,可能会使用当地服务器的时区,一般中国的时区可以设置为Asia/Shanghai或者北京

博客网址相关

1
2
3
4
5
6
7
8
9
# URL
## If your site is put in a subdirectory, set url as 'http://example.com/child' and root as '/child/'
url: http://example.com
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # 设置为false时会将末尾的index.html去掉
trailing_html: true # 设置为false时会将末尾的.html去掉,对index.html无效

url:指定博客的完整域名或 URL 地址。当你将博客部署到互联网上时,访问者需要通过这个地址来访问你的博客,要确保 url 地址准确无误,不然可能会导致博客内的链接(如文章内的图片链接、页面跳转链接等)无法正常访问

root:网站的根目录,指定博客在域名下的根目录,如果你的博客是直接部署在域名的根目录下,就将 root 设置为 /;若博客部署在域名的子目录下,比如部署在 http://example.com/blog 下,那么就需要把 root 设置为 /blog/。正确设置 root 很重要,不然会影响博客内资源(如 CSS、JavaScript 文件等)的加载路径。

permalink:文章的永久链接格式,一般是格式化日期字符串,可以在permalink这里配置,如默认中的配置,在hello world文章中就会是这样的url

  • 当使用Font-matter中的值配置的时候(文章格式标签),可选的值有

    img

permalink_defaults:设置永久链接的默认值。当你在文章的 Front - Matter(文章开头的元数据部分)中没有对某些永久链接相关的变量进行设置时,就会使用这里定义的默认值。不过在示例中,没有具体设置默认值,所以会采用 Hexo 的默认配置。

pretty_urls:就是如注释那样

目录相关

1
2
3
4
5
6
7
8
9
# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Writing
new_post_name: :title.md
default_layout: post
titlecase: false # Transform title into titlecase
external_link:
enable: true # Open external links in new tab
field: site # Apply to the whole site
exclude: ''
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
enable: true
line_number: false
auto_detect: false
tab_replace: ''
wrap: true
hljs: false

new_post_name:新文章的默认名称,我们是使用hexo new来构造文章的,生成的文章名就是通过这里配置的,默认为:title.md,也就是标题.md

default_layout:预设布局,指定你新建文章的布局,布局决定了文章在渲染时使用的模板,hexo new可以创建三种文件,post/帖子,draft/草稿,page/页面,这里设置默认值在使用hexo new就可以直接创建对应默认类型的文章,设置了post就等同于说在命令行执行hexo new 和执行hexo new post 是一样的,也可以设置为draft和page

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
2
3
4
index_generator:
path: ''
per_page: 10
order_by: -date

index_generator:主页相关的设置

  • path:主页对应的路径,默认为’’,即域名根目录就是主页的路径
  • per_page:每页显示的帖子数,默认为10
  • order_by:帖子的排序,默认为-date,即按日期倒序排

分类和标签

1
2
3
4
# Category & Tag
default_category: uncategorized # 默认分类
category_map: # 分类别名
tag_map: # 标签别名

default_category:当你创建新文章时,如果没有在文章的 Front - Matter(即文章开头的元数据部分)中明确指定文章的分类,那么这篇文章就会被自动归类到 default_category 所指定的分类中。在这个例子里,默认分类是 uncategorized,也就是 “未分类”。

category_mapcategory_map 用于设置分类的别名。在实际写文章和管理博客的过程中,你可能会使用一个比较简洁或者容易输入的分类名,但在博客的展示页面上,你希望使用更正式、美观或者表意更清晰的名称。这时就可以通过 category_map 来实现分类名的映射。

例如:

1
2
3
category_map:
tech: 技术分享
life: 生活随笔

当你在文章的 Front - Matter 中使用 categories: [tech] 时,在博客的分类页面显示的分类名称将会是 “技术分享”,而不是 tech

tag_maptag_map 的作用与 category_map 类似,不过它是用于设置标签的别名。在写文章时,你可能会使用一些简单的标签名,但在博客展示时,希望使用更合适的名称,就可以通过 tag_map 来进行映射。

元数据元素

1
2
3
# Metadata elements
## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
meta_generator: true

是否在页面开头插入下面的meta标签,默认为true

img

日期和时间

1
2
3
4
5
6
7
8
# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss
## Use post's date for updated date unless set in front-matter
use_date_for_updated: false

date_format:日期格式,默认为YYYY-MM-DD,即年月日

time_format:时间格式,默认为HH:mm:ss,即时分秒

use_date_for_updated:启用以后,如果 Front Matter 中没有指定 updated(文件更新日期),post.updated 将会使用 date 的值而不是文件的创建时间,默认值为true

分页

1
2
3
4
# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page

per_page:分页时每页的文章数,如果为0则不分页,默认为10

pagination_dir分页的目录,默认为page,对应于public文件夹下的archives文件夹下的page文件夹,如果只有一页是不会生成这个文件夹的

包括或不包括目录和文件

1
2
3
4
5
# Include / Exclude file(s)
## include:/exclude: options only apply to the 'source/' folder
include:
exclude:
ignore:

include:Hexo 默认会忽略隐藏文件和文件夹(包括名称以下划线和 . 开头的文件和文件夹,Hexo 的 _posts 和 _data 等目录除外)。通过设置此字段将使 Hexo 处理他们并将它们复制到 source 目录下。

exclude:Hexo 会忽略这些文件和目录

ignore:忽略的文件,要注意的是,这里要写入的是数组,而yaml的数组要用-值表示数组中一个元素或者直接采用js中数组的写法[]

主题

1
2
3
4
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: landscape # 当前使用的主题名

部署

1
2
3
4
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: ''

hexo提供了快速方便的一键部署功能hexo deploy,但我们至少需要在_config.yml文件中的deploy中至少配置一个type,比如

1
2
deploy:
type: git
1
2
3
4
5
deploy:
type: git
repo: <repository url> # 库地址
branch: [branch] # 分支名称
message: [message] # 自定义提交信息

参考内容:

部分内容转载自https://blog.csdn.net/zemprogram/article/details/104288872

hexo官方中文文档

hexo官方英文文档(有些中文文档没有的英文文档的才有)

hexo fromt-matter

hexo 部署