本章目标: 掌握hexo框架_config.yml配置文件的配置方法
特别说明:
- 本文中的配置是建站必要的配置,表格单元格内有 重要
- 对于Hexo提供的扩展配置会在另外的章节随着功能一起讲解,因这些扩展功能全是可选的在建站时不一定会需要;
- yaml文件的值可带引号也可以不带,比如
title: "abc"
和title: abc
全是正确的,建议不带双引号;- 文中的
文章
专指单个的博文网页,即一个.md文件或生成的.html文件;
一、网站设置参数
参数 | 描述 |
| 网站标题,用于收藏和SEO |
| 网站副标题,建议写上主要用于收藏时显示名称用 |
| 网站描述,主要用于SEO |
| 网站的关键词,对SEO作用不大,建议写,多个关键词用英文的逗号分隔 |
| 您的名字,用于主页显示 |
| 网站使用的语言,常见的有 |
| 网站时区,对于中国大陆地区可以使用 |
| 网页是否生成:元数据元素,默认值为true,详细查看html meta |
| 主题设置,默认为landspace |
| 发布配置,可配置类似github、sftp等类型,可查看第一章中发布一节介绍 |
1.1、网站主页设置
如没必要,不建议修改此处的值
参数 | 说明 |
| 网站主页地址 |
| 分页条数 |
| 排序方式 |
示例
index_generator:
path: ''
per_page: 10
order_by: -date
二、网址设置参数
参数 | 默认值 |
| 本站地址,例如 http://example.com/blog,则请将您的 url 设为 |
| 网站根目录 |
| 文章的目录和文件名格式,默认值为 |
| 永久链接中各部分的默认值 |
| 是否在永久链接中保留尾部的 |
| 是否在永久链接中保留尾部的 |
2.1、permalink文章生成路径
官方解释为永久路径,其实简单理解就是博客文件的访问路径,因为这些文件是物理存在的不能随意被更改,所以称之为永久路径。如果采用abbrlink
插件,则此处的值可忽略,可选的参数值如下:
变量 | 描述 |
| 文章的发表年份(4 位数) |
| 文章的发表月份(2 位数) |
| 文章的发表月份(不含前导零) |
| 文章的发表日期 (2 位数) |
| 文章的发表日期(不含前导零) |
| 文章发表时的小时 (2 位数) |
| 文章发表时的分钟 (2 位数) |
| 文章发表时的秒钟 (2 位数) |
| 文件名称 (相对于 "source/_posts/" 文件夹) |
| 文件名称 |
| 文章标题 |
| 文章 ID |
| 分类。如果文章没有分类,则是 |
| 文件名(与 |
您可在 permalink_defaults
参数下调整永久链接中各变量的默认值:
permalink_defaults:
lang: en
#源文件:source/_posts/hello-world.md
title: Hello World
date: 2013-07-14 17:01:34
categories:
- foo
- bar
permalink参数值 | 生成的文件名或文件目录 |
| 2013/07/14/hello-world/index.html |
| 2013-07-14-hello-world.html |
| foo/bar/hello-world/index.html |
| hello-world-a2c8ac003b43/index.html |
#源文件:source/_posts/lorem/hello-world.md
title: Hello World
date: 2013-07-14 17:01:34
categories:
- foo
- bar
permalink参数值 | 生成的文件名或文件目录 |
| 2013/07/14/lorem/hello-world/ |
| 2013/07/14/hello-world/ |
2.2、permalink对I18N多语种支持
若要建立一个多语种的网站,可修改 new_post_name
和 permalink
参数,如下:
new_post_name: :lang/:title.md
permalink: :lang/:title/
当您建立新文章时,文章会被储存到:
# => source/_posts/tw/Hello-World.md
$ hexo new "Hello World" --lang tw
而网址会是:
http://localhost:4000/tw/hello-world/
三、目录设置参数
这些目录规定了源文件的存放位置,另外需要注意这些文件目录是hexo框架在设计时抽象出来的一个技术博客必要的目录结构且与hexo特定的功能有关,只能配置不能删减否则会缺少必要的功能。
参数 | 描述 | 默认值 |
| 资源文件夹,这个文件夹用来存放内容。 |
|
| 公共文件夹,这个文件夹用于存放生成的站点文件。这个可以改成与nginx相同的值,省去了配置 |
|
| 标签文件夹 |
|
| 归档文件夹 |
|
| 分类文件夹 |
|
| Include code 文件夹, |
|
| 国际化(i18n)文件夹 |
|
| 跳过指定文件的渲染。匹配到的文件将会被不做改动地复制到 |
四、文章设置参数
参数 | 描述 | 默认值 |
| 新文章的文件名称 |
|
| 预设布局 |
|
| 在中文和英文之间加入空格 |
|
| 把标题转换为骆峰式写法 |
|
| 在浏览器新标签中打开链接 |
|
| 对整个网站( |
|
| 需要排除的域名。主域名和子域名如 |
|
| 把文件名称转换为 (1) 小写或 (2) 大写 |
|
| 显示草稿 |
|
| 启动Asset 文件夹 |
|
| 把链接改为与根目录的相对位址 |
|
| 显示未来的文章 |
|
| 代码块的设置,后面会讲 | |
| 代码块的设置,后面会讲 |
4.1、highlight代码块样式
Hexo默认提供了 highlight.js 与 prismjs 两种代码高亮库,只能开启一个。
# _config.yml
highlight:
enable: true
prismjs:
enable: false #禁用
默认配置如下:
# _config.yml
highlight: 默认开启
enable: true
auto_detect: false //能够自动检测代码块的语言,建议关掉此功能
line_number: true
line_threshold: 0 //只有代码块的行数超过这个阈值才显示行数。默认值为 0
tab_replace: '' //用代码内的 tab (\t) 替换为给定值,默认值是两个空格。
exclude_languages:
- example //哪些语言不显示
wrap: true //和line_number一同开启才会显示行号
hljs: false //没啥大意思,给 class 添加 hljs- 前缀,防止样式重名
prismjs:
enable: false
preprocess: true
line_number: true
line_threshold: 0
tab_replace: ''
4.2、分页设置
此处的分页是用于设置列表页的分页设置的,列表页包含主页、分类页、归档页、标签页等,采用默认值即可
参数 | 描述 | 默认值 |
| 每页显示的文章量 (0 = 关闭分页功能) |
|
| 分页目录 |
|
例如:
pagination_dir: 'page'
# http://example.com/page/2
pagination_dir: 'awesome-page'
# http://example.com/awesome-page/2
4.3、文章meta信息显示
meta信息是html的一个标准
参数 | 说明 |
| 默认值为true,表示是否在文章标题下方显示meta信息 |
五、显示其它设置
5.1、分类 & 标签
一般不需要设置
参数 | 描述 | 默认值 |
| 默认分类 |
|
| 分类别名 | |
| 标签别名 |
5.1、日期 / 时间格式
一般不需要设置
参数 | 描述 | 默认值 |
| 日期格式 |
|
| 时间格式 |
|
| 当 Front Matter 中没有指定 created 时 updated 的取值 |
|
updated_option
mtime
: 使用文件的最后修改时间 。date
: 使用 date 作为 updated 的值。
六、源文件编译设置
通过设置 include/exclude 可以让 Hexo 进行处理或忽略某些目录和文件夹。include
和 exclude
选项只会应用到 source/
,而 ignore
选项会应用到所有文件夹.
source/_posts
文件夹是一个例外,但该文件夹下任何名称以_
开头的文件或文件夹仍会被忽略。不建议在该文件夹中使用include
规则。
参数 | 描述 |
| Hexo 默认会不包括 |
| Hexo 不包括 |
| Hexo 会忽略整个 Hexo 项目下的这些文件夹或文件 |
列表中的每一项都必须用单引号或双引号包裹起来,例如:
# 处理或不处理目录或文件
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*"
# 不要用 exclude 来忽略 'source/_posts/' 中的文件。你应该使用 'skip_render',或者在要忽略的文件的文件名之前加一个下划线 '_'
# 在这里配置一个 - "_posts/hello-world.md" 是没有用的。
ignore:
# 忽略任何一个名叫 'foo' 的文件夹
- "**/foo"
# 只忽略 'themes/' 下的 'foo' 文件夹
- "**/themes/*/foo"
# 对 'themes/' 目录下的每个文件夹中忽略名叫 'foo' 的子文件夹
- "**/themes/**/foo"
附:_config默认配置
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/
# Site
title: KorgClub
subtitle: 全栈式程序开发技术博客
description: Korg8是全栈式程序开发课程网站,包括java、python、js、objective-c、spring、cglib等基础, 涉及领域包括但不限于DDD、软件工程、架构设计、Devops、AI、深度学习、插件开发.
keywords: blog.korg8, 基础,java,python,js,objective-c,spring,DDD,软件工程,架构设计,Devops,深度学习,IDEA插件开发,字节码编程
author: Korgs
language: zh-CN
timezone: Asia/Shanghai
theme: butterfly
# Home page setting
index_generator:
path: ''
per_page: 10
order_by: -date
# URL
url: http://blog.korg8.com
root: /
permalink: posts/:abbrlink/
permalink_defaults:
pretty_urls:
trailing_index: true
trailing_html: true
abbrlink:
alg: crc32
rep: hex
drafts: false
auto_category:
enable: true
depth: #3(default)
over_write: false
auto_title: false
auto_date: false
force: false
# Directory
source_dir: source
public_dir: html
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
# Category & Tag
default_category: uncategorized
category_map:
tag_map:
# Writing
new_post_name: :title.md
default_layout: post
auto_spacing: true
titlecase: false
external_link:
enable: true
field: site
filename_case: 0
render_drafts: false
post_asset_folder: true
marked:
prependRoot: true
postAsset: true
relative_link: false
future: true
highlight:
enable: true
line_number: true
line_threshold: 15
auto_detect: false
tab_replace: ''
wrap: true
hljs: false
prismjs:
enable: false
preprocess: true
line_number: true
tab_replace: ''
# Metadata elements
meta_generator: true
# Date / Time format
date_format: YYYY-MM-DD
time_format: HH:mm:ss
updated_option: 'mtime'
# Pagination
per_page: 10
pagination_dir: page
# Include / Exclude file(s)
include:
exclude:
ignore:
标签:配置文件,Hexo,title,博客,source,文件夹,默认值,true,dir
From: https://blog.51cto.com/arch/6504640