基于Hexo和Butterfly创建个人技术博客,(2) 博客站点配置,Hexo框架_config.yml配置文件细说明

Hexo官司网查看 这里
个人站点效果查看这里

本章目标:
掌握hexo框架_config.yml配置文件的配置方法

特别说明:

  1. 本文中的配置是建站必要的配置,表格单元格内有 重要 标识的为一般需要更改或比较重要的的配置,其它的可采用默认值即可;
  2. 对于Hexo提供的扩展配置会在另外的章节随着功能一起讲解,因这些扩展功能全是可选的在建站时不一定会需要;
  3. yaml文件的值可带引号也可以不带,比如 title: "abc"title: abc 全是正确的,建议不带双引号;
  4. 文中的文章专指单个的博文网页,即一个.md文件或生成的.html文件;

一、网站设置参数

参数 描述
title重要 网站标题,用于收藏和SEO
subtitle 网站副标题,建议写上主要用于收藏时显示名称用
description 重要 网站描述,主要用于SEO
keywords 网站的关键词,对SEO作用不大,建议写,多个关键词用英文的逗号分隔
author 重要 您的名字,用于主页显示
language 重要 网站使用的语言,常见的有enzh-Hanszh-CN
timezone 重要 网站时区,对于中国大陆地区可以使用 Asia/Shanghai
meta_generator 重要 网页是否生成:元数据元素,默认值为true,详细查看html meta
theme 重要 主题设置,默认为landspace
deploy 发布配置,可配置类似github、sftp等类型,可查看第一章中发布一节介绍

1.1、网站主页设置

如没必要,不建议修改此处的值

参数 说明
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

2.1、permalink文章生成路径

官方解释为永久路径,其实简单理解就是博客文件的访问路径,因为这些文件是物理存在的不能随意被更改,所以称之为永久路径。如果采用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/

2.2、permalink对I18N多语种支持

若要建立一个多语种的网站,可修改 new_post_namepermalink 参数,如下:

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 代码块的设置,后面会讲

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、分页设置

此处的分页是用于设置列表页的分页设置的,列表页包含主页、分类页、归档页、标签页等,采用默认值即可

参数 描述 默认值
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

4.3、文章meta信息显示

meta信息是html的一个标准

参数 说明
meta_generator 默认值为true,表示是否在文章标题下方显示meta信息

五、显示其它设置

5.1、分类 & 标签

一般不需要设置

参数 描述 默认值
default_category重要 默认分类 uncategorized
category_map重要 分类别名
tag_map 重要 标签别名

5.1、日期 / 时间格式

一般不需要设置

参数 描述 默认值
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 进行处理或忽略某些目录和文件夹。includeexclude 选项只会应用到 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"

附:_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建站,node,hexo,技术博客,建站,butterflay)