hexo-github-搭建个人博客

hexo

基本概念

  • 布局(layout)

Hexo 有三种默认布局:postpagedraft。在创建这三种不同类型的文件时,它们将会被保存到不同的路径;而您自定义的其他布局和 post 相同,都将储存到 source/_posts 文件夹。

布局 路径
post source/_posts
page source
draft source/_draft
  • 模版(Scaffold)

在新建文章时,Hexo 会根据 scaffolds 文件夹内相对应的文件来建立文件,例如:

1
$ hexo new photo "My Gallery"

在执行这行指令时,Hexo 会尝试在 scaffolds 文件夹中寻找 photo.md,并根据其内容建立文章。

  • 草稿(draft)

这种布局在建立时会被保存到 source/_drafts 文件夹,您可通过 publish 命令将草稿移动到 source/_posts 文件夹,该命令的使用方式与 new 十分类似。

  • 资源文件夹

资源(Asset)代表 source 文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。比方说,如果你的Hexo项目中只有少量图片,那最简单的方法就是将它们放在 source/images 文件夹中。然后通过类似于 ![](/images/image.jpg) 的方法访问它们。

对于那些想要更有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上的人来说,Hexo也提供了更组织化的方式来管理资源。这个稍微有些复杂但是管理资源非常方便的功能可以通过将 config.yml 文件中的 post_asset_folder 选项设为 true 来打开。

当资源文件管理功能打开后,Hexo将会在你每一次通过 hexo new [layout] <title> 命令创建新文章时自动创建一个文件夹。这个资源文件夹将会有与这个文章文件一样的名字。将所有与你的文章有关的资源放在这个关联文件夹中之后,你可以通过相对路径来引用它们,这样你就得到了一个更简单而且方便得多的工作流。

安装

1
npm install hexo-cli -g

使用

命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 在当前目录或指定目录下初始化网站
$ hexo init [folder]
# 创建文章 您可以在命令中指定文章的布局(layout),默认为 post,可以通过修改 _config.yml 中的 default_layout 参数来指定默认布局
$ hexo new [layout] <title>
$ hexo new page --path about/me "About me"

# 如果使用path参数,则路径即分类(推荐)
$ hexo new --path dir1/dir2/file1.txt "第一个测试文件"

# 生成静态文件 f相当于hexo clean
$ hexo g -f -d --debug
# 启动服务器。默认情况下,访问网址为: http://localhost:4000/
$ hexo s -p 5000 --debug
# 部署网站 -g部署之前预先生成静态文件
$ hexo d -g --debug
# 清除缓存文件 (db.json) 和已生成的静态文件 (public)。在某些情况(尤其是更换主题后),如果发现您对站点的更改无论如何也不生效,您可能需要运行该命令。
$ hexo clean
# 列出网站资料
$ hexo list <type>

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
25433@DESKTOP-5C07FVD MINGW64 /f/personal/blog/hexo (master)
$ hexo new --path dir1/dir2/file1 "第一个分类测试文件"
INFO Created: F:\personal\blog\hexo\source\_posts\dir1\dir2\file1.md

25433@DESKTOP-5C07FVD MINGW64 /f/personal/blog/hexo (master)
$ hexo clean
INFO Deleted database.
INFO Deleted public folder.

25433@DESKTOP-5C07FVD MINGW64 /f/personal/blog/hexo (master)
$ hexo g
INFO Start processing
INFO Generated: categories [[ 'dir1', 'dir2' ]] for post [file1.md]
INFO Files loaded in 329 ms

写作

Front-matter

Front-matter 是文件最上方以 --- 分隔的区域,用于指定个别文件的变量,举例来说:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
---
title: Hello World
date: 2013/7/13 20:46:25
categories:
- Diary
tags:
- PS3
- Games
---
参数 描述 默认值
layout 布局 config.default_layout
title 标题 文章的文件名
date 建立日期 文件建立日期
updated 更新日期 文件更新日期
comments 开启文章的评论功能 true
tags 标签(不适用于分页)
categories 分类(不适用于分页)
permalink 覆盖文章网址
excerpt Page excerpt in plain text. Use this plugin to format the text
disableNunjucks Disable rendering of Nunjucks tag {{ }}/{% %} and tag plugins when enabled
lang Set the language to override auto-detection Inherited from _config.yml

分类和标签

只有文章支持分类和标签,您可以在 Front-matter 中设置。在其他系统中,分类和标签听起来很接近,但是在 Hexo 中两者有着明显的差别:分类具有顺序性和层次性,也就是说 Foo, Bar 不等于 Bar, Foo;而标签没有顺序和层次。具体参考上边。

1
2
3
4
5
6
7
8
9
10
11
# 会使分类Life成为Diary的子分类,而不是并列分类。因此,有必要为您的文章选择尽可能准确的分类。
categories:
- Diary
- Life

# 如果你需要为文章添加多个分类,可以尝试以下 list 中的方法。
categories:
- [Diary, PlayStation]
- [Diary, Games]
- [Life]
# 此时这篇文章同时包括三个分类: PlayStation 和 Games 分别都是父分类 Diary 的子分类,同时 Life 是一个没有子分类的分类。

一键部署

  1. 安装hexo-deployer-git
1
$ npm install hexo-deployer-git --save
  1. 修改配置
1
2
3
4
5
6
# 不管是git还是gitee,都要创建与登录用户名相同的仓库,保存静态代码,否则容易因路径问题,导致图片或者js无法加载!!!
deploy:
type: git
repo: <repository url> #https://bitbucket.org/JohnSmith/johnsmith.bitbucket.io
branch: [branch]
message: [message]
  1. 生成站点文件并推送至远程库
1
hexo clean && hexo deploy

配置

网站

参数 描述
title 网站标题
subtitle 网站副标题
description 网站描述
keywords 网站的关键词。支持多个关键词。
author 您的名字
language 网站使用的语言。对于简体中文用户来说,使用不同的主题可能需要设置成不同的值,请参考你的主题的文档自行设置,常见的有 zh-Hanszh-CN
timezone 网站时区。Hexo 默认使用您电脑的时区。请参考时区列表 进行设置,如 America/New_York, Japan, 和 UTC 。一般的,对于中国大陆地区可以使用 Asia/Shanghai

网址

参数 描述 默认值
url 网址, 必须以 http://https:// 开头
root 网站根目录 url's pathname
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

目录

参数 描述 默认值
source_dir 资源文件夹,这个文件夹用来存放内容。 source
public_dir 公共文件夹,这个文件夹用于存放生成的站点文件。 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 目录中。您可使用 glob 表达式来匹配路径。

文章

参数 描述 默认值
new_post_name 新文章的文件名称 :title.md
default_layout 预设布局 post
auto_spacing 在中文和英文之间加入空格 false
titlecase 把标题转换为 title case false
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.js 进行设置
prismjs 代码块的设置, 请参考PrismJS 进行设置

分类 & 标签

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

日期 / 时间格式

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

参数 描述 默认值
date_format 日期格式 YYYY-MM-DD
time_format 时间格式 HH:mm:ss
updated_option 当 Front Matter 中没有指定updatedupdated 的取值 mtime

扩展(主题)

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

error

  • can`t deploy my hexo bu hexo-deployer-git,please help me #186

but re-install hexo-deployer-git don’t work for me, but npm install hexo-fs work.

  • 页面报Uncaught TypeError: Cannot read property ‘match‘ of null

主题不好使,换个主题就可以了

  • 分类和标签功能无法使用
1
2
3
4
5
# 添加 layout: "categories"。同理,添加 layout: "tags"。
title: 文章分类
date: 2021-12-20 11:00:02
type: "categories"
layout: "categories"
  • 提交到gitee或者github,没有变化,或部分变化

静等几分钟,可能会有奇迹发生。

参考

打赏
  • © 2015-2024 DXShelley
  • Powered by Hexo Theme Ayer

请我喝杯咖啡吧~~~

支付宝
微信