Hexo官司网查看 这里
个人站点效果查看这里
本章目标:
掌握hexo框架_config.yml配置文件的配置方法
特别说明:
- 本文中的配置是建站必要的配置,表格单元格内有 重要 标识的为一般需要更改或比较重要的的配置,其它的可采用默认值即可;
- 对于Hexo提供的扩展配置会在另外的章节随着功能一起讲解,因这些扩展功能全是可选的在建站时不一定会需要;
- yaml文件的值可带引号也可以不带,比如
title: "abc"
和title: abc
全是正确的,建议不带双引号;- 文中的
文章
专指单个的博文网页,即一个.md文件或生成的.html文件;
参数 | 描述 |
---|---|
title 重要 |
网站标题,用于收藏和SEO |
subtitle |
网站副标题,建议写上主要用于收藏时显示名称用 |
description 重要 |
网站描述,主要用于SEO |
keywords |
网站的关键词,对SEO作用不大,建议写,多个关键词用英文的逗号分隔 |
author 重要 |
您的名字,用于主页显示 |
language 重要 |
网站使用的语言,常见的有en 、 zh-Hans 和 zh-CN 。 |
timezone 重要 |
网站时区,对于中国大陆地区可以使用 Asia/Shanghai 。 |
meta_generator 重要 |
网页是否生成:元数据元素,默认值为true,详细查看html meta |
theme 重要 |
主题设置,默认为landspace |
deploy |
发布配置,可配置类似github、sftp等类型,可查看第一章中发布一节介绍 |
如没必要,不建议修改此处的值
参数 | 说明 |
---|---|
path 重要 |
网站主页地址 |
per_page |
分页条数 |
order_by |
排序方式 |
示例
index_generator:
path: ''
per_page: 10
order_by: -date
参数 | 默认值 |
---|---|
url 重要 |
本站地址,例如 http://example.com/blog,则请将您的 url 设为 http://example.com/blog 并把 root 设为 /blog/ |
root 重要 |
网站根目录 |
permalink 重要 |
文章的目录和文件名格式,默认值为:year/:month/:day/:title/ ,建议使用abbrlink 插件实现,后面章节有描述如何配置此插件 |
permalink_defaults |
永久链接中各部分的默认值 |
pretty_urls .trailing_index |
是否在永久链接中保留尾部的 index.html ,设置为 false 时去除,默认值true |
pretty_urls .trailing_html |
是否在永久链接中保留尾部的 .html , 设置为 false 时去除 ,默认值true |
官方解释为永久路径,其实简单理解就是博客文件的访问路径,因为这些文件是物理存在的不能随意被更改,所以称之为永久路径。如果采用abbrlink
插件,则此处的值可忽略,可选的参数值如下:
变量 | 描述 |
---|---|
:year |
文章的发表年份(4 位数) |
:month |
文章的发表月份(2 位数) |
:i_month |
文章的发表月份(不含前导零) |
:day |
文章的发表日期 (2 位数) |
:i_day |
文章的发表日期(不含前导零) |
:hour |
文章发表时的小时 (2 位数) |
:minute |
文章发表时的分钟 (2 位数) |
:second |
文章发表时的秒钟 (2 位数) |
:title |
文件名称 (相对于 “source/_posts/” 文件夹) |
:name |
文件名称 |
:post_title |
文章标题 |
:id |
文章 ID |
:category |
分类。如果文章没有分类,则是 default_category 配置信息。 |
:hash |
文件名(与 :title 相同)和日期的 SHA1 哈希值(12位16进制数) |
您可在 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参数值 | 生成的文件名或文件目录 |
---|---|
:year/:month/:day/:title/ |
2013/07/14/hello-world/index.html |
:year-:month-:day-:title.html |
2013-07-14-hello-world.html |
:category/:title/ |
foo/bar/hello-world/index.html |
:title-:hash/ |
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参数值 | 生成的文件名或文件目录 |
---|---|
:year/:month/:day/:title/ |
2013/07/14/lorem/hello-world/ |
:year/:month/:day/:name/ |
2013/07/14/hello-world/ |
若要建立一个多语种的网站,可修改 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特定的功能有关,只能配置不能删减否则会缺少必要的功能。
参数 | 描述 | 默认值 |
---|---|---|
source_dir |
资源文件夹,这个文件夹用来存放内容。 | source |
public_dir 重要 |
公共文件夹,这个文件夹用于存放生成的站点文件。这个可以改成与nginx相同的值,省去了配置 | public |
tag_dir |
标签文件夹 | tags |
archive_dir |
归档文件夹 | archives |
category_dir |
分类文件夹 | categories |
code_dir |
Include code 文件夹,source_dir 下的子目录 |
downloads/code |
i18n_dir |
国际化(i18n)文件夹 | :lang |
skip_render |
跳过指定文件的渲染。匹配到的文件将会被不做改动地复制到 public 目录中,比如"mypage/**/*" |
参数 | 描述 | 默认值 |
---|---|---|
new_post_name |
新文章的文件名称 | :title.md |
default_layout 重要 |
预设布局 | post |
auto_spacing 重要 |
在中文和英文之间加入空格 | false |
titlecase |
把标题转换为骆峰式写法 | false |
external_link |
在浏览器新标签中打开链接 | 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 重要` |
代码块的设置,后面会讲 | |
prismjs |
代码块的设置,后面会讲 |
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: ''
此处的分页是用于设置列表页的分页设置的,列表页包含主页、分类页、归档页、标签页等,采用默认值即可
参数 | 描述 | 默认值 |
---|---|---|
per_page |
每页显示的文章量 (0 = 关闭分页功能) | 10 |
pagination_dir |
分页目录 | page |
例如:
pagination_dir: 'page'
# http://example.com/page/2
pagination_dir: 'awesome-page'
# http://example.com/awesome-page/2
meta信息是html的一个标准
参数 | 说明 |
---|---|
meta_generator |
默认值为true,表示是否在文章标题下方显示meta信息 |
一般不需要设置
参数 | 描述 | 默认值 |
---|---|---|
default_category 重要 |
默认分类 | uncategorized |
category_map 重要 |
分类别名 | |
tag_map 重要 |
标签别名 |
一般不需要设置
参数 | 描述 | 默认值 |
---|---|---|
date_format |
日期格式 | YYYY-MM-DD |
time_format |
时间格式 | HH:mm:ss |
updated_option |
当 Front Matter 中没有指定 created 时 updated 的取值 | mtime |
updated_option
mtime
: 使用文件的最后修改时间 。date
: 使用 date 作为 updated 的值。
通过设置 include/exclude 可以让 Hexo 进行处理或忽略某些目录和文件夹。include
和 exclude
选项只会应用到 source/
,而 ignore
选项会应用到所有文件夹.
source/_posts
文件夹是一个例外,但该文件夹下任何名称以 _
开头的文件或文件夹仍会被忽略。不建议在该文件夹中使用 include
规则。参数 | 描述 |
---|---|
include |
Hexo 默认会不包括 source/ 目录下 以下划线和 . 开头的文件和文件夹。 |
exclude |
Hexo 不包括 source/ 下的这些文件和目录 |
ignore |
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"
# 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: