热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Hexo自定义Hexo配置文件

说明上一篇里,介绍了使用Hexo+githubpages+travisci

说明

上一篇里,介绍了使用 Hexo + github pages + travis ci 实现自动化博客部署,我们已经收获了一个属于自己的博客,但现在还比较简陋,里面的设置信息都是默认的数据,所以我们需要把它们改成我们想要的内容。

所以这一篇里,主要介绍 Hexo 的配置文件如何设置。通过本篇的学习,你将知道 Hexo 配置文件的各个属性是什么意思,并给出我使用的配置,这样你就能随心所欲的进行配置了。

站点信息

先来看第一部分,站点信息的配置。先说明一下各个字段的含义:






































参数描述
title网站标题
subtitle网站副标题
description网站描述,主要用于 SEO,告诉搜索引擎关于站点的简要信息
keywords网站的关键词。使用半角逗号, 分隔多个关键词。
author你的名字
language网站使用的语言,常见的有 zh-Hans 、zh-CN 、 en
timezone网站时区。默认使用本地时区。也可以指定其它时区,如 America/New_York, Japan, 和 UTC 。一般的,对于中国大陆地区可以使用 Asia/Shanghai。

下面是我的配置,可以作为参考:

# Site
title: 弗兰克的猫
subtitle: ‘永远年轻,永远热泪盈眶‘
description: ‘铭记过去,拥抱未来,心中有梦,眼里有光‘
keywords: 生活,编程,阅读,音乐,电影
author: 清风
language: zh-CN
timezone: ‘‘

网址信息

网址信息配置主要是设置网站的地址和文章链接格式。














































参数描述默认值
url网址
root网站根目录
permalink文章的永久链接格式 :year/:month/:day/:title/
permalink_defaults永久链接中各部分的默认值
pretty_urls改写 permalink 的值来美化 URL
pretty_urls.trailing_index是否在永久链接中保留尾部的 index.html,设置为 false 时去除true
pretty_urls.trailing_html是否在永久链接中保留尾部的 .html, 设置为 false 时去除 (对尾部的 index.html无效)true

例如:

# 比如,一个页面的永久链接是 http://example.com/foo/bar/index.html
pretty_urls:
trailing_index: false
# 此时页面的永久链接会变为 http://example.com/foo/bar/

这里通常只需要修改 urlroot,如果博客是使用 github pages 进行部署的,url 配置成对应的博客地址即可。这里需要注意的是 root 的值,如果是按照我们上一篇中的方式进行部署的,则需要把 root 的值设置为 /项目名/

下面是我的配置:

# URL
## If your site is put in a subdirectory, set url as ‘http://yoursite.com/child‘ and root as ‘/child/‘
url: https://mfrank2016.github.io/
root: /breeze-blog/
permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing ‘index.html‘ from permalinks
trailing_html: true # Set to false to remove trailing ‘.html‘ from permalinks

目录信息

目录信息是指定各类目录对应的位置,通常不需要修改。



















































参数描述默认值
source_dir资源文件夹,这个文件夹用来存放博客 md 等文件。source
public_dir公共文件夹,这个文件夹用于存放生成的站点静态文件。public
tag_dir标签文件夹tags
archive_dir归档文件夹archives
category_dir分类文件夹categories
code_dirInclude code 文件夹,source_dir 下的子目录downloads/code
i18n_dir国际化(i18n)文件夹:lang
skip_render跳过指定文件的渲染。匹配到的文件将会被不做改动地复制到 public 目录中。您可使用 glob 表达式来匹配路径。

例如:

skip_render: "mypage/**/*"
# 将会直接将 `source/mypage/index.html` 和 `source/mypage/code.js` 不做改动地输出到 ‘public‘ 目录
# 你也可以用这种方法来跳过对指定文章文件的渲染
skip_render: "_posts/test-post.md"
# 这将会忽略对 ‘test-post.md‘ 的渲染

我的配置如下:

# 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:

文章配置

这一部分是配置与文章相关的各类属性。















































































































参数描述默认值
new_post_name新文章的文件名称:title.md
default_layout预设布局post
auto_spacing在中文和英文之间加入空格false
titlecase把标题转换为 title casefalse
external_link在新标签中打开链接true
external_link.enable在新标签中打开链接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代码块的设置
highlight.enable开启代码块高亮true
highlight.auto_detect如果未指定语言,则启用自动检测false
highlight.line_number显示行数true
highlight.tab_replace用 n 个空格替换 tabs;如果值为空,则不会替换 tabs‘‘
highlight.wrap把代码块用 `` 包裹true
highlight.hljs为 highlight 的 css 文件中的类添加 hljs-* 前缀false

auto_spacing 建议开启,这样的话看起来更美观,titlecase 是指关键单词首字母大写,如果不太清楚,可以看下面的说明:

Titles should be written in title case. This means only using capital letters for the principal words. Articles, conjunctions, and prepositions do not get capital letters unless they start the title. For example:
The Last of the Mohicans

post_asset_folder 建议开启,这样会在生成新的文章时,同时会同一目录下生成同名文件夹,这样可以把该文章相关的图片等资源放进去,方便引用和管理。

下面是我的配置:

new_post_name: :title.md # File name of new posts
default_layout: post
auto_spacing: true
titlecase: false # Transform title into titlecase
external_link:
enable: true # Open external links in new tab
field: post # Apply to the whole site
exclude: ‘‘
filename_case: 0
render_drafts: false
post_asset_folder: true
relative_link: false
future: true
# highlight:
# enable: true
# line_number: true
# auto_detect: false
# tab_replace: ‘‘
# wrap: true
# hljs: false
highlight:
enable: false
# 代码高亮
prism_plugin:
mode: ‘preprocess‘ # realtime/preprocess
theme: ‘tomorrow‘
line_number: false # default false
custom_css:

这里我使用了另一个代码高亮插件,如果通常使用默认的 hljs 高亮即可。如果也想要使用这个插件,可以查看这里,需要先进行安装:

npm i -S hexo-prism-plugin

分类和标签信息

这里配置的是别名,即映射信息,如果文章使用的是英文名分类,这里可以不用设置,如果使用了中文名分类,最好配置一些对应的英文名,否则在对应的分类链接中就会出现 URL 编码的中文,比如这样:

http://localhost:4000/breeze-blog/categories/programming/life/%E6%B5%8B%E8%AF%95/


























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

我的配置如下:

# Category & Tag
default_category: uncategorized
category_map:
编程: programming
生活: life
阅读: reading
随想: thoughts
理财: finance
tag_map:
敏捷开发: agile-development
环境搭建: environment-building

日期 / 时间格式

Hexo 使用 Moment.js 来解析和显示时间。


























参数描述默认值
date_format日期格式YYYY-MM-DD
time_format时间格式HH:mm:ss
use_date_for_updated启用以后,如果 Front Matter 中没有指定 updatedpost.updated 将会使用 date 的值而不是文件的创建时间。在 Git 工作流中这个选项会很有用true

我的配置如下:

# 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: true

分页信息






















参数描述默认值
per_page每页显示的文章量 (0 = 关闭分页功能)10
pagination_dir分页目录page

我的配置如下:

# Pagination
## Set per_page to 0 to disable pagination
per_page: 12
pagination_dir: page

扩展信息



























参数描述
theme当前主题名称。值为false时禁用主题
theme_config主题的配置文件。在这里放置的配置会覆盖主题目录下的 _config.yml 中的配置
deploy部署部分的设置
meta_generatorMeta generator 标签。 值为 false 时 Hexo 不会在头部插入该标签

这里设置 theme 即可开启对应的主题,具体如何设置会在后面的文章进行详细说明。

theme_config 可以在这里配置主题文件里的各个参数进行覆盖,这样就不用维护两份 config 文件了,不过个人觉得还是不同主题文件使用不同配置文件比较好。

deploy 是部署相关的配置,比如 git 部署,除此之外,还有很多其它部署姿势,比如:HerokuNetlify 等,但都需要先安装对应的插件。

我的配置如下:

# Extensions
theme: hexo-theme-matery
# Deployment
deploy:
type: ‘git‘
repo: git@github.com:MFrank2016/breeze-blog
branch: gh-pages

包括或不包括目录和文件

Hexo 配置文件中,通过设置 include/exclude 可以让 Hexo 进行处理或忽略某些目录和文件夹。可以使用 glob 表达式 对目录和文件进行匹配。

includeexclude 选项都只能应用于 source/ 文件夹, 但 ignore 选项可以应用于所有文件夹。






















参数描述
includeHexo 默认会忽略隐藏文件和文件夹(包括名称以下划线和 . 开头的文件和文件夹,Hexo_posts_data 等目录除外)。通过设置此字段将使 Hexo 处理他们并将它们复制到 source 目录下。
excludeHexo 会忽略这些文件和目录
ignore忽略文件或文件夹

举例:

# Include/Exclude Files/Folders
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:
# Ignore any folder named ‘foo‘.
- "**/foo"
# Ignore ‘foo‘ folder in ‘themes/‘ only.
- "**/themes/*/foo"
# Same as above, but applies to every subfolders of ‘themes/‘.
- "**/themes/**/foo"

列表中的每一项都必须用单引号或双引号包裹起来。

includeexclude 并不适用于 themes/ 目录下的文件。如果需要忽略 themes/ 目录下的部分文件或文件夹,可以使用 ignore 或在文件名之前添加下划线 _

技术图片



推荐阅读
  • vue使用
    关键词: ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
author-avatar
里枯萎
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有