我的GitHub | 我的博客 | 我的微信 | 我的邮箱 |
---|---|---|---|
baiqiantao | baiqiantao | bqt20094 | baiqiantao@sina.com |
目录
[TOC]
Hexo
Hexo 是一个快速、简洁且高效的博客框架
。Hexo 使用 Markdown 解析文章,在几秒内,即可利用靓丽的主题
生成静态网页
。
Hexo 是基于 Node.js
的高效静态
站点生成框架,通过 Hexo 你可以轻松地使用 Markdown 编写文章。
1 | 使用体验:不建议使用! |
快速使用
- 确保安装了 Node.js:
node -v
和npm -v
- 确保配置了 ssh:
ssh -T git@github.com
- 全局安装 hexo:
npm i -g hexo
- 创建一个博客目录并初始化:
hexo init
- 安装所需要的组件:
npm install
- 创建一个文件:
hexo new xxx
,执行后会在目录/source/_posts/
下生成一个文件xxx.md
- 生成静态文件:
hexo g
,生成的文件都在/public/
目录下 - 启动本地服务:
hexo s
,或hexo server -p 端口号
启动服务后,可访问 http://localhost:4000 查看生成的静态文件。在服务启动期间,Hexo 会监视文件变动并自动更新,而无须重启服务器。
部署到 GitHub
- 在 GitHub 上创建仓库
- 如果部署到根目录,仓库名必须为:
baiqiantao.github.io
- 如果部署到子目录,仓库名可随意,比如:
hexoBlog
- 如果部署到根目录,仓库名必须为:
- 在
_config.yml
中设置正确的 url 和 root- 如果部署到根目录:
url: https://baiqiantao.github.io
,root: /
- 如果部署到子目录:
url: https://baiqiantao.github.io/hexoBlog
,root: /hexoBlog/
- 如果部署到根目录:
- 在
_config.yml
中设置正确的 deploy- 如果部署到根目录:
repo: git@github.com:baiqiantao/baiqiantao.github.io.git
,branch: master
- 如果部署到子目录:
repo: git@github.com:baiqiantao/hexoBlog.git
,branch: gh-pages
- 如果部署到根目录:
- 安装部署插件:
npm i hexo-deployer-git
- 执行命令
hexo g -d
即可自动完成build
、push
等操作 - 然后就可以访问 baiqiantao.github.io 或 baiqiantao.github.io/hexoBlog/
1 | deploy: |
1 | deploy: |
目录结构
1 | ├── .deploy_git # 在 _config.yml 中配置的 git 仓库,内容来自 public 目录 |
source
目录下的除_posts
外,开头命名为_
的文件、文件夹和隐藏的文件将会被忽略source
目录下的 Markdown 文件,会被解析后放到public
目录,其他文件,例如图片、css、js、lib 等,会被直接拷贝到public
目录source/images
中的图片可以通过相对路径
引用,例如,对于source/images/logo.png
:source/_posts/README.md
中引用方式:![](../images/logo.png)
source/_posts/blog/about.md
中引用方式:![](../../images/logo.png)
确保
source
目录下的 MarkDown 文件以及_config.yml
配置文件是以utf-8
编码保存的。
常用命令
1 | hexo init [folder] # 初始化 |
功能拓展
主题 themes
使用主题
- 下载主题文件
git clone --branch v5.1.2 https://github.com/iissnan/hexo-theme-next themes/next
- hexo 在 5.0 之后把 swig 给删除了,需要手动安装,否则页面会渲染失败:
npm i hexo-renderer-swig
- hexo 在 5.0 之后把 swig 给删除了,需要手动安装,否则页面会渲染失败:
- 下载完成后,在 themes 文件夹内,会新增一个名为当前主题的文件夹,比如
next
- 修改
_config.yml
内的主题theme: next
,有些主题可能会需要添加一些必要的配置 - 修改主题后,建议先
hexo clean
,然后再hexo g
几个流行的主题
- landscape:默认主题
- NexT:14K,最知名的主题
- Yilia:6K
- indigo:2K
- material:3.5K
- tranquilpeak:1.5K
- icarus:2K
- Yelee:1K
- Hueman:1K
- Jacman:1K
插件 plugins
1 | npm install 插件名称 --save # 安装插件 |
如果插件代码很简单,可以写 JavaScript
脚本,只需要脚本文件放到 scripts
文件夹中,在启动时就会自动载入。
链接 permalink
permalink 直接翻译的意思是
永久链接
,但是其实在这里的意思仅仅是:MarkDown 文件生成的 html 被部署后,访问的链接的生成规则
,没有什么永久不永久的意思。
设置规则
可以在 permalink
中设置网站的永久链接(也可以在文章的 Front-matter
中指定),可在 permalink_defaults
参数下调整永久链接中各变量的默认值。
1 | permalink: :title/ ## 文章链接,默认【:year/:month/:day/:title/】,要以/或.html结尾 |
permalink
中可以下列变量或 Front-matter
中定义的属性(例如title
)
:title
:文件名称:category
:文章分类。如果文章没有分类,则是default_category
配置信息:post_title
:文章标题:id
:文章 ID:year
:文章的发表年份,4 位数:month
:文章的发表月份,2 位数:i_month
:文章的发表月份,去掉开头的零:day
:文章的发表日期,2 位数:i_day
:文章的发表日期,去掉开头的零
设置案例
假设文件 source/_posts/about.md
中包含以下 Front-matter
:
1 | title: about |
1 | permalink: :year/:month/:day/:title/ # 生成的链接为【2018/07/14/about】,有多个层级 |
链接插件
- permalink-pathed-title:使用文件的相对路径生成链接
- hexo-abbrlink:在文章的
front-matter
中自动增加abbrlink
属性,值为base64(md5(标题+时间))
,例如abbrlink: 66c8
分类和标签
在 Hexo 中,分类具有顺序性和层次性,而标签没有
1 | categories: |
设置别名
在 _config.yml
中,我们可以通过 category_map
给一个 category 设置别名
,然后在组合 url 的时候,用这个别名 来替代 category 名称。tag_map
的功能类似。
1 | default_category: blog ## 当没有分类时的默认分类,默认【uncategorized】 |
自动分类插件
- hexo-auto-category
- 插件介绍:根据文件目录,自动生成
front-matter
中的categories
变量,值为所有子目录
- 安装:
npm install hexo-auto-category --save
- 类似插件:directory-category
例如,对于博客 source/_post/web/framework/hexo.md
,该插件会自动生成以下categories:
1 | categories: |
修改配置文件_config.yml
,添加如下内容:
1 | ## Generate categories from directory-tree |
修改插件源码 TODO
hexo-auto-category 可以在构建时,自动为生成的文件添加 categories
信息,我能不能在让他自动帮我生成title
等信息呢?
配置文件 config
YAML 依靠
缩进
来确定元素间的从属关系,因此,请确保缩进长度相同,并且使用空格
缩进
1 | ## Site 网站 |
2019-3-15