Hexo使用说明笔记
本文简要介绍如何使用Hexo在github上搭建一个个人博客网站,关于Hexo的详细使用说明,还请参考官方文档
1、文件简介
在Hexo生成的目录下,大致有一下几个文件夹/文件:
public 生成的网站文件,发布的站点文件。
source资源文件夹,用于存放内容。
tag 标签文件夹。
archive归档文件夹。
category分类文件夹。
downloads/code include code文件夹。
:lang i18n_dir 国际化文件夹。
_config.yml 配置文件
- 配置说明
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091# Hexo Configuration## Docs: https://hexo.io/docs/configuration.html## Source: https://github.com/hexojs/hexo/# Site,参数说明:title 网站标题;subtitle 网站副标题;description 网站描述,在搜索引擎中可被搜索的信息,可以配置描述关键字;author 作者姓名;language 网站语言;timezone 网站时区;# 默认使用电脑本地时区,可以用时区表指定,如America/New_York,UTC等。title: Binglumeng's Blogsubtitle: Just do what you want !author: 冰路梦language:timezone:# URL## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'# 参数说明:url 网址;root 网址根目录,要是网站存放在子目录,这里就要配置到子目录路径,如url是https://binglumeng.github.io ,而https://binglumeng.github.io/blog才是文件路径,那么root就要设置为/blog/;# permalink 文章永久链接格式,:year/:month/:day/:title/ ;permalink_defaults 永久链接中各部分的默认值。url: https://binglumeng.github.io/# root就是网址路径pathroot: /binglumeng/permalink: :year/:month/:day/:title/permalink_defaults:# Directory 目录参数说明:source_dir 资源文件夹,用于存放内容,默认值source;public_dir 公共文件夹,存放生成的站点文件,默认值public;# tag_dir 标签文件夹 默认值tag;archive_dir 归档文件夹 默认值archives;category_dir 分类文件夹,默认值categories;# code_dir include code 文件夹,默认值 downloads/code ;i18n_dir 国际化文件夹 ,默认值 :lang ;skip_render 跳过指定的渲染,可以使用glob表达式来匹配路径。source_dir: sourcepublic_dir: publictag_dir: tagsarchive_dir: i_dont_wanna_use_default_archivescategory_dir: categoriescode_dir: downloads/codei18n_dir: :langskip_render:# Writing 文章相关参数:new_post_name 新文章文件名 ,默认值:title.md ;# default_category 预设布局,默认值 post ;# auto_spacing 中英文之间加入空格,默认 false;# titlecase 把标题转换为title case 默认值 false;# external_link 新标签中打开链接 ,默认值 true;# filename_case 把文件名转换为(1)小写或(2)大写。默认值0;# render_drafts 显示草稿,默认值false;# post_asset_folder 启动Asset文件夹,默认值false;# relative_link 把链接改为与根目录的相对路径位置,默认值false;# future 显示未来的文章,默认值true;# highlight 代码块设置new_post_name: :title.md # File name of new postsdefault_layout: posttitlecase: false # Transform title into titlecaseexternal_link: true # Open external links in new tabfilename_case: 0render_drafts: falsepost_asset_folder: truerelative_link: falsefuture: truehighlight:enable: trueline_number: trueauto_detect: truetab_replace:# Category & Tag 分类和标签 ,default_categorty 默认分类,默认值 uncategorized;# category_map 分类别名;tag_map 标签别名default_category: uncategorizedcategory_map:tag_map:# Date / Time format 日期时间格式 date_format 日期格式 ,默认是YYYY-MM-DD ;time_format 时间格式 ,H:mm:ss## 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-DDtime_format: HH:mm:ss# Pagination 分页 per_page 每页显示的文章数,0表示关闭分页。默认值10;# pagination_dir 分页目录,默认值page## Set per_page to 0 to disable paginationper_page: 10pagination_dir: page# Extensions 扩展,theme 当前主题的名称 ,false表示禁止使用主题。## Plugins: https://hexo.io/plugins/## Themes: https://hexo.io/themes/theme: binglumeng# Deployment 部署的设置## Docs: https://hexo.io/docs/deployment.htmldeploy:type: gitrepo: https://github.com/branch: masterpackage.json 包信息
指令说明
使用hexo首先要安装node.js和git。本文演示为windows系统下,linux和mac请参照官方文档。
- init
|
|
- new
|
|
- generate
|
|
该指令可以简写为hexo g
- publish
|
|
- server
|
|
- deploy
|
|
该命令可以简写hexo g
- render
|
|
- migrate
|
|
- clean
|
|
- list
|
|
- version
|
|
选项指令
- 选项指令
1234567 > hexo --safe # 安全模式,会禁用插件和脚本。> hexo --debug # debug 模式> hexo --silent # 简洁模式,隐藏终端信息> hexo --config custom.yml # 自定义配置文件路径,如此就不会使用_config.yml了。> hexo --draft # 显示草稿,也就是source/_drafts> hexo --cwd /path/to/cwd # 自定义当前工作目录>
迁移文章
RSS 使用RSS需要安装
hexo-migrator-rss
插件
1234 > npm install hexo-migrator-rss --save> #可使用如下命令,从RSS迁移所有文章> hexo migrate rss <source>>
>
Jekyll 将
_post
文件夹内的文件复制到source/posts
下,在_config.yml
修改new_post_name
12 > new_post_name: :year-:month-:day-:title.md>
>
Octopress
将Octopress中
source/_posts
文件复制到Hexo的对应目录下,在修改_config.yml
中new_post_name
参数
12 > new_post_name: :year-:month-:day-:title.md>
>
WordPress
需要安装
hexo-migrator-wordpress
插件
1234 > npm install hexo-migrator-wordpress --save> # wordpress导出数据,然后hexo迁移> hexo migrate wordpress <source> # source可以是网址,或者文件夹>
>
Joomla
安装
hexo-migrator-joomla
插件,类似wordpress迁移。
123 > npm install hexo-migrator-joomla> hexo migrate joomla <source>>
3、写作
你可以执行下列命令来创建一篇新文章。
|
|
您可以在命令中指定文章的布局(layout),默认为 post
,可以通过修改 _config.yml
中的 default_layout
参数来指定默认布局。
布局(Layout)
Hexo 有三种默认布局:post
、page
和 draft
,它们分别对应不同的路径,而您自定义的其他布局和 post
相同,都将储存到 source/_posts
文件夹。
布局 | 路径 |
---|---|
post |
source/_posts |
page |
source |
draft |
source/_drafts |
不要处理我的文章 如果你不想你的文章被处理,你可以将 Front-Matter 中的
layout:
设为false
。
文件名称
Hexo 默认以标题做为文件名称,但您可编辑 new_post_name
参数来改变默认的文件名称,举例来说,设为 :year-:month-:day-:title.md
可让您更方便的通过日期来管理文章。
变量 | 描述 |
---|---|
:title |
标题(小写,空格将会被替换为短杠) |
:year |
建立的年份,比如, 2015 |
:month |
建立的月份(有前导零),比如, 04 |
:i_month |
建立的月份(无前导零),比如, 4 |
:day |
建立的日期(有前导零),比如, 07 |
:i_day |
建立的日期(无前导零),比如, 7 |
草稿
刚刚提到了 Hexo 的一种特殊布局:draft
,这种布局在建立时会被保存到 source/_drafts
文件夹,您可通过 publish
命令将草稿移动到 source/_posts
文件夹,该命令的使用方式与 new
十分类似,您也可在命令中指定 layout
来指定布局。
|
|
草稿默认不会显示在页面中,您可在执行时加上 --draft
参数,或是把 render_drafts
参数设为 true
来预览草稿。
4、模版(Scaffold)
在新建文章时,Hexo 会根据 scaffolds
文件夹内相对应的文件来建立文件,例如:
|
|
在执行这行指令时,Hexo 会尝试在 scaffolds
文件夹中寻找 photo.md
,并根据其内容建立文章,以下是您可以在模版中使用的变量:
变量 | 描述 |
---|---|
layout |
布局 |
title |
标题 |
date |
文件建立日期 |
5、Front-matter
Front-matter 是文件最上方以 ---
分隔的区域,用于指定个别文件的变量,举例来说:
|
|
以下是预先定义的参数,您可在模板中使用这些参数值并加以利用。
参数 | 描述 | 默认值 |
---|---|---|
layout |
布局 | |
title |
标题 | |
date |
建立日期 | 文件建立日期 |
updated |
更新日期 | 文件更新日期 |
comments |
开启文章的评论功能 | true |
tags |
标签(不适用于分页) | |
categories |
分类(不适用于分页) | |
permalink |
覆盖文章网址 |
分类和标签
只有文章支持分类和标签,您可以在 Front-matter 中设置。在其他系统中,分类和标签听起来很接近,但是在 Hexo 中两者有着明显的差别:分类具有顺序性和层次性,也就是说 Foo, Bar
不等于 Bar, Foo
;而标签没有顺序和层次。
|
|
分类方法的分歧
如果您有过使用WordPress的经验,就很容易误解Hexo的分类方式。WordPress支持对一篇文章设置多个分类,而且这些分类可以是同级的,也可以是父子分类。但是Hexo不支持指定多个同级分类。下面的指定方法:
categories:DiaryLife
会使分类Life
成为Diary
的子分类,而不是并列分类。因此,有必要为您的文章选择尽可能准确的分类。
JSON Front-matter
除了 YAML 外,你也可以使用 JSON 来编写 Front-matter,只要将 ---
代换成 ;;;
即可。
|
|
标签插件和 Front-matter 中的标签不同,它们是用于在文章中快速插入特定内容的插件。
6、 标签插件(Tag Plugins)
标签插件和 Front-matter 中的标签不同,它们是用于在文章中快速插入特定内容的插件。
在文章中插入引言,可包含作者、来源和标题。
别号: quote
|
|
样例
没有提供参数,则只输出普通的 blockquote
|
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.
引用书上的句子
|
|
Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.
David LevithanWide Awake
引用 Twitter
|
|
NEW: DevDocs now comes with syntax highlighting. http://devdocs.io
引用网络上的文章
|
|
Every interaction is both precious and an opportunity to delight.
Seth GodinWelcome to Island Marketing
在文章中插入代码。
别名: code
|
|
样例
普通的代码块
|
|
|
|
指定语言
|
|
|
|
附加说明
|
|
|
|
附加说明和网址
|
|
|
|
另一种形式的代码块,不同的是它使用三个反引号来包裹。
\
content
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
比如使用相对引用图片资源时候
|
|
8、数据文件
Hexo 3中增加了数据文件
的功能,便于资源复用。通过加载source/_data
下的yaml 或json
文件。
|
|
9、部署
在_config.yml
中配置参数,就可以部署到服务器。
|
|
- git
安装hexo-deploy-git
|
|
配置_config.yml
|
|
10、永久链接
_config.yml
配置调用永久链接或在每篇文章的Front-matter中指定
- 变量
变量 | 描述 |
---|---|
:year |
文章的发表年份(4 位数) |
:month |
文章的发表月份(2 位数) |
:i_month |
文章的发表月份(去掉开头的零) |
:day |
文章的发表日期 (2 位数) |
:i_day |
文章的发表日期(去掉开头的零) |
:title |
文件名称 |
:id |
文章 ID |
:category |
分类。如果文章没有分类,则是 default_category 配置信息。 |
修改permalink_defaluts:
参数为空,就可以永久变量。
- 多语言支持
修改new_post_name
和permalink
参数:
|
|
11、主题
创建Hexo主题,在themes
文件夹内,新增任意文件夹,修改_config.yml
内theme
设置
|
|
12、模板
每个主题都必须有个index
的模板,用于决定网站内容的呈现方式
模板 | 用途 | 回调 |
---|---|---|
index |
首页 | |
post |
文章 | index |
page |
分页 | index |
archive |
归档 | index |
category |
分类归档 | archive |
tag |
标签归档 | archive |