使用hexo完成文章的创建和发布
Hexo 是一个快速、简洁且高效的博客框架,它使用 Markdown(或其他标记语言)解析文章,并能够在几秒内利用漂亮的主题生成静态网页。
参考文档:https://hexo.io/zh-cn/docs/
快速开始
创建一篇新博文
要创建一篇新文章或页面,请执行以下命令:
$ hexo new "My New Post" |
启动本地服务
Hexo 3.0 将服务器作为一个单独的模块,需要先安装 hexo-server 才能使用。
$ npm install hexo-server --save |
安装完成后,使用以下命令启动服务器,网站将在 http://localhost:4000
上运行。在服务器运行期间,Hexo 会监视文件变动并自动更新,无需重启服务器。
$ hexo server |
如果需要更改端口或遇到 EADDRINUSE
错误,可以使用 -p
选项指定其他端口:
$ hexo server -p 5000 |
静态模式
在静态模式下,服务器仅处理public
文件夹中的文件,并且不会监视文件变动。在使用静态模式时,应该先执行hexo generate
命令。这通常用于生产环境(production mode)。
$ hexo server -s |
自定义 IP
服务器默认运行在 0.0.0.0
,可以通过-i
指定ip
地址:
$ hexo server -i 192.168.1.1 |
设置此参数后,您只能通过指定的 IP 地址访问站点。例如,对于使用无线网络的笔记本电脑,除了本地127.0.0.1
地址外,通常还有一个192.168.*.*
的局域网 IP 地址。如果使用-i
参数指定了局域网 IP,那么无法通过公网 IP 来访问站点。
生成文件
使用 Hexo 生成静态文件快速而且简单。
$ hexo generate |
监视文件变动
Hexo 可以监视文件变动并立即重新生成静态文件。在生成过程中,Hexo 会比对文件的 SHA1 校验和,只有发生变动的文件才会被写入。
$ hexo generate --watch |
部署网站
执行以下任一命令,在生成完毕后自动部署网站,两个命令的作用是相同的。
$ hexo generate --deploy |
简写
上面两个命令可以简写为 $ hexo g -d $ hexo d -g
Front-matter
Front-matter 是位于文件顶部的---
分隔区域,用于指定特定文件的变量。例如:
--- |
以下是预定义的参数,可以在模板中使用这些参数的值:
参数 | 描述 | 默认值 |
---|---|---|
layout |
布局 | config.default_layout |
title |
标题 | 文章的文件名 |
date |
建立日期 | 文件建立日期 |
updated |
更新日期 | 文件更新日期 |
comments |
开启文章的评论功能 | true |
tags |
标签(不适用于分页) | |
categories |
分类(不适用于分页) | |
permalink |
覆盖文章的永久链接,永久链接应该以 / 或 .html 结尾 |
null |
excerpt |
纯文本的页面摘要。使用 该插件 来格式化文本 | |
disableNunjucks |
启用时禁用 Nunjucks 标签 {{ }} /{% %} 和 标签插件 的渲染功能 |
false |
lang |
设置语言以覆盖 自动检测 | 继承自 _config.yml |
布局
根据 _config.yml
中 default_layout
的设置,默认布局是 post
。当文章中的布局被禁用(layout: false
),它将不会使用主题处理。然而,它仍然会被任何可用的渲染引擎渲染:如果一篇文章是用 Markdown 写的,并且安装了 Markdown 渲染引擎(比如默认的 hexo-renderer-marked),它将被渲染成 HTML。
除非通过 disableNunjucks
设置或 渲染引擎 禁用,否则无论布局如何,标签插件 总是被处理。
分类和标签
只有文章支持分类和标签,您可以在 Front-matter 中设置。在其他系统中,分类和标签听起来很接近,但是在 Hexo 中两者有着明显的差别:分类具有顺序性和层次性,也就是说 Foo, Bar
不等于 Bar, Foo
;而标签没有顺序和层次。
categories: |
分类方法的区别
如果您有使用 WordPress 的经验,可能会误解 Hexo 的分类方式。WordPress 支持为一篇文章设置多个分类,并且这些分类可以是同级的,也可以是父子分类。但是在 Hexo 中,不能指定多个同级分类。下面的设置:
categories:
- Diary
- Life将会使
Life
成为Diary
的子分类,而不是同级分类。因此,选择最准确的分类很重要。如果需要为文章添加多个分类,可以尝试以下列表中的方法:
categories:
- [Diary, PlayStation]
- [Diary, Games]
- [Life]这样,这篇文章将同时包含三个分类:
PlayStation
和Games
是Diary
的子分类,而Life
是一个没有子分类的分类。
JSON Front-matter
除了 YAML,也可以使用 JSON 来编写 Front-matter,只需将---
替换为;;;
即可。
"title": "Hello World", |