Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

介绍

安装 Hexo 完成后,请执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件。

1
2
3
$ hexo init <folder>
$ cd <folder>
$ npm install

新建完成后,指定文件夹的目录如下:

1
2
3
4
5
6
7
8
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes

_config.yml

网站的 配置 信息,您可以在此配置大部分的参数。

package.json

应用程序的信息。

scaffolds

模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。

Hexo的模板是指在新建的markdown文件中默认填充的内容。例如,如果您修改scaffold/post.md中的Front-matter内容,那么每次新建一篇文章时都会包含这个修改。

source

资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。

themes

主题 文件夹。Hexo 会根据主题来生成静态页面。

指令

init

1
$ hexo init [folder]

新建一个网站。如果没有设置 folder ,Hexo 默认在目前的文件夹建立网站。

new

1
$ hexo new [layout] <title>

新建一篇文章。如果没有设置 layout 的话,默认使用 _config.yml 中的 default_layout 参数代替。如果标题包含空格的话,请使用引号括起来。

generate

1
$ hexo generate

生成静态文件。

选项 描述
-d, --deploy 文件生成后立即部署网站
-w, --watch 监视文件变动

该命令可以简写为

1
$ hexo g

publish

1
$ hexo publish [layout] <filename>

发表草稿。

server

1
$ hexo server

启动服务器。默认情况下,访问网址为: http://localhost:4000/

选项 描述
-p, --port 重设端口
-s, --static 只使用静态文件
-l, --log 启动日记记录,使用覆盖记录格式

deploy

1
$ hexo deploy

部署网站。

参数 描述
-g, --generate 部署之前预先生成静态文件

该命令可以简写为:

1
$ hexo d

render

1
$ hexo render <file1> [file2] ...

渲染文件。

参数 描述
-o, --output 设置输出路径

clean

1
$ hexo clean

清除缓存文件 (db.json) 和已生成的静态文件 (public)。

在某些情况(尤其是更换主题后),如果发现您对站点的更改无论如何也不生效,您可能需要运行该命令。

list

1
$ hexo list <type>

列出网站资料。

version

1
$ hexo version

显示 Hexo 版本。

选项

安全模式

1
$ hexo --safe

在安全模式下,不会载入插件和脚本。当您在安装新插件遭遇问题时,可以尝试以安全模式重新执行。

调试模式

1
$ hexo --debug

在终端中显示调试信息并记录到 debug.log。当您碰到问题时,可以尝试用调试模式重新执行一次,并 [提交调试信息到 GitHub。

简洁模式

1
$ hexo --silent

隐藏终端信息。

自定义配置文件的路径

1
$ hexo --config custom.yml

自定义配置文件的路径,执行后将不再使用 _config.yml

显示草稿

1
$ hexo --draft

显示 source/_drafts 文件夹中的草稿文章。

自定义 CWD

1
$ hexo --cwd /path/to/cwd

自定义当前工作目录(Current working directory)的路径。

配置

可以在 _config.yml 中修改大部份的配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Site 网站
title: Hexo #网站标题
subtitle: '' #网站副标题
description: '' #网站描述
#主要用于SEO,告诉搜索引擎一个关于站点的简单描述。
keywords: #关键字,用逗号分隔多个关键字
author: yz_l #您的名字,用于主题显示文章的作者。
language: en #网站使用的语言
timezone: '' #网站时区。Hexo 默认使用您电脑的时区。时区列表。
#比如说:America/New_York, Japan, 和 UTC 。
# URL 网址
## 如果您的网站存放在子目录中,例如 http://yoursite.com/blog,则请将您的 url 设为 http://yoursite.com/blog 并把 root 设为 /blog/。
url: http://yoursite.com #网址
root: / #网站根目录
permalink: :year/:month/:day/:title/ #文章的永久链接格式
permalink_defaults: #永久链接中各部分的默认值
pretty_urls: #将permalink变量重写为pretty_urls
trailing_index: true #设置为false以从永久链接中删除末尾的“index.html”
trailing_html: true #设置为false以从永久链接中删除末尾的“.html”,对index.html无效

# Directory 目录
source_dir: source #资源文件夹,这个文件夹用来存放内容。
public_dir: public #公共文件夹,这个文件夹用于存放生成(执行hexo g)的站点文件。
tag_dir: tags #标签文件夹
archive_dir: archives #归档文件夹
category_dir: categories #分类文件夹
code_dir: downloads/code #Include code 文件夹
i18n_dir: :lang #国际化(i18n)文件夹
skip_render: #跳过指定文件的渲染,您可使用 glob 表达式来匹配路径。
#匹配到的文件将会被不做改动地复制到public文件夹,如果路径对应的是我们的文章,那会直接忽略掉该文章

# Writing 文章
new_post_name: :title.md #新文章的文件名称
#使用hexo new来构造文章的,生成的文章名就是通过这里配置的
default_layout: post #预设布局
#hexo有三种默认布局:post,draft,page,这里设置默认值在使用hexo new就可以直接创建对应默认类型的文章,设置了post就等同于说在命令行执行hexo new <name>和执行hexo new post <name>是一样的
titlecase: false #把标题转换为 title case
external_link:
enable: true #是否在新标签中打开链接
field: site #enable对当前网站(site)生效或仅对文章(post)生效
exclude: '' #需要排除的域名
filename_case: 0 #把文件名称转换为 (1) 小写或 (2) 大写,默认不转换(0)
render_drafts: false #是否显示草稿(是否渲染草稿文件)
post_asset_folder: false #是否启动资源文件夹
relative_link: false #是否把链接改为与根目录的相对地址
future: true #是否显示当前时间之后的文章,默认为true
#如果设置为false,若我们文章设置的日期是未来的日期,就不会显示
highlight: #代码块的设置
enable: true #开启代码高亮
line_number: true #显示代码的行数
auto_detect: false #如果未指定语言,就自动检测
tab_replace: '' #用n个空格来代表tab键,如果值为空,则不会代替tab键
wrap: true #是否将代码放在table标签里
hljs: false #是否对CSS类使用hljs-*前缀

# Home page setting 主页设置
index_generator:
path: '' #主页对应的路径,默认为’’,即域名根目录就是主页的路径
per_page: 10 #每页显示的帖子数,默认为10 (0表示禁用分页)
order_by: -date #帖子的排序,默认为-date,即按日期倒序排

# Category & Tag 分类 & 标签
default_category: uncategorized #默认分类
category_map: #分类别名
tag_map: #标签别名

# Metadata elements 元数据元素
meta_generator: true #是否在页面开头插入下面的meta标签

# Date / Time format 日期 / 时间格式
##Hexo 使用 Moment.js 来解析和显示时间。
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD #日期格式,默认为YYYY-MM-DD,即年月日
time_format: HH:mm:ss #时间格式,默认为HH:mm:ss,即时分秒
use_date_for_updated: false #除非在front-matter设置了更新日期,否则使用md文件的修改日期作为更新日期

# Pagination 分页
## Set per_page to 0 to disable pagination
per_page: 10 #每页显示的文章量 (0 = 关闭分页功能)
pagination_dir: page #分页目录
#对应于public/archives/page,如果只有一页是不会生成这个文件夹的

# Include / Exclude file(s) 包括或不包括目录和文件
include: #Hexo 默认会忽略隐藏文件和文件夹
#(包括名称以_和.开头的文件和文件夹,Hexo 的 _posts和 _data等目录除外)。
#通过设置此字段将使 Hexo 处理他们并将它们复制到 source 目录下。
exclude: #Hexo 会忽略这些文件和目录
ignore: #忽略的文件

# Extensions 扩展
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: yilia #当前主题名称。值为false时禁用主题

# Deployment 部署
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: #部署服务器的类别
repo: <repository url> #库地址
branch: [branch] #分支名称
message: [message] #自定义提交信息
#(默认为 Site updated: {{ now('YYYY-MM-DD HH:mm:ss') }})

部署到Github

1
2
3
4
5
deploy:  
type: git
repo: git@github.com:csNovice/csNovice.github.io.git #配置SSH免密登录
#repo: https://github.com/csNovice/csNovice.github.io.git #每次都要输入账号密码
branch: master

注意:SSH和Https的仓库地址的不同之处

1
2
3
ssh:      git@github.com:username/username.github.io.git
https: https://github.com/username/username.github.io.git
#ssh com后面是: https com后面是/

注意:

写这篇笔记的时候发现一个问题,就是用Typora写yaml文件时,用tab进行缩进会出现问题。

在Typora上调整到对齐,在博客上显示就不是对齐。

主要原因时在博客上的tab是8个空格,而在Typora上是4个空格,因此就会出现问题。

百度之后,发现yaml不支持tab缩进。

因此再写yaml时直接用空格来进行对齐,绝对不要用tab。

Hexo+Typora显示图片

首先在你网站的根目录的source文件夹下创建images文件夹,用以存放图片。

之后,在Typora文件->偏好设置,图片插入的地方选择“复制到指定路径”,

../../source/images

在Typora格式->图像->设置图片根目录,把目录设置到source。

插入图片的格式:

1
!()[/images/image_name.png]

就可以显示在网站上显示图片了。

注意:每当在一个新创建的md文件想要显示图片,都要设置一下图片根目录。