Hexo静态博客生成器
站内链接:
介绍和环境安装
hexo
hexo 是什么?如何安装 hexo? 如何利用 hexo 建立简易博客? 需要做哪些配置? Hexo 相关命令? 本文将会讲解 hexo 相关的知识点, 理解标签插件(插入各种内容), 主题等.hexo 是一个快速, 简洁且高效的博客框架,使用 Markdown 或者其他渲染引擎解析文章,并生成静态页面. 类似的博客框架还有 hugo 等生成器.
安装
首先, 安装 nodeenv 虚拟运行环境, 选择合适的版本, 不建议使用高版本的 node, 否则会出现各种问题. 包的安装参考nodeenv.
a. 安装虚拟环境:
1 | # 进入python虚拟环境, 注意, 这是最外层的虚拟环境1 |
b. 进入虚拟环境:
1 | # 进入nodeenv创建的virtualenv(注意, 此时已经在最外层nodejs中) |
c. 退出虚拟环境:
1 | # 退出nodejs环境 |
PS: 2023-01-01 补充, 使用 nodeenv 更加的繁琐了,可以通过 nvm 按照不同版本的 node,之后在当前 shell 中通过 nvm 临时切换 node 版本, 然后再进行 hexo 环境的安装, 没必要搞上面的 env 环境。
基于 docker
使用 docker 安装 hexo 运行环境, 一键快速完成, 善用 docker. dockerfile 配置:
1 | # 打包个人博客docker环境 |
在完成上述配置之后就可以使用如下命令构建并且运行容器:
1 | # 宿主机 |
如果不希望每次都输入 run 命令, 那使用 docker-compose 来进行管理,下面是 docker-compose.yml 配置:
1 | version: '3.4' |
后续可以使用命令:
1 | # 启动测试, 查看标准输出 |
运行成功之后, 就可以直接访问 4000 端口服务: http://127.0.0.1:4000
fluid 主题
最新版本基于 docker 的 fluid 主题的容器搭建, 参考使用 docker 搭建 hexo.
自定义的配置可以见fluid 主题配置, 进入该目录执行如下命令即可自动创建容器:
1 | docker-compose up -d |
Command
Initialize
初始化网站的各个配置文件和相关目录,命令如下:
1 | # init,新建一个网站 |
基本命令
1 | # 新建一篇文章 |
选项
1 | # 安全模式,不会插入脚本和插件 |
Tag Pugins
说明
插入引言,可以包含(作者,来源,标题等):
1 | {% blockquote [author[, source]] [link] [source_link_title] %} |
代码块:
1 | {% codeblock [title] [lang:language] [url] [link text] %} |
三个反引号, 具体格式:
1 | [language][title][url][link text] code |
其他配置:
1 | # youtube视频 |
1 | 注意, 任何不在代码块中的{%后面都必须跟随post_link, 否则会报错, 例如: |
错误
如果发生错误unknown path
, 则表示文章中包含某些特殊字符:
1 | 1. {% |
Glossary
物理布局
各个文件夹含义:
- Scaffold–根据 scaffolds 文件夹来创建文件,查找 photo.md 模板来创建新的文件
- config.yml–存放配置
- source–存放用户资源的地方, 所有的 md 文件, 网站 ico 等
- themes–博客主题, 通过 submodule 来添加主题并引用
- public–执行 hexo generate 之后, 统一生成资源,可以提取该目录进行博客的单独部署
关键术语
layout, 布局,有:post, page, draft,对应不同的路径
- post source/_posts
- page source
- draft source/_drafts
Front-Format–文件最上方使用的分割区域,指定个别文件的变量,参数说明:
1 | layout 文件布局 |
标签
对于标签和分类, 需要提前增加响应的文件夹, 以便后续能够在导航栏
中进入标签和分类.
添加标签页面的命令如下:
1 | hexo new page tags |
在文件source/tags/index.md
中增加 categories 内容:
1 | --- |
往文章中增加新的 tags:
1 | tags: - vim |
分类
添加分类页面的命令如下:
1 | hexo new page categories |
在文件source/categoried/index.md
中增加 categories 内容:
1 | --- |
往文章中增加新的 categories:
1 | categories: - vim |
source
资源: 资源+文章内容,其中资源表示:图片,CSS 等文件
数据文件: source/_data
文件夹,用于不在文章内,但是重复使用的资料。
部署
github
每一个 github 账号只能有一个特殊的命令约定项目:username.github.io,用于
创建个人博客,所有网站内容在 master 分支下(当然,另外一种 gh-pages 这里
不再描述).在创建完项目之后,可以在 setting 中查看是否正确的完成部署操作.
github pages 原理:
- master 下的静态文件可以通过 username.github.io 链接访问
- hexo -g 会生成一个静态网站
- hexo d 会将静态网站提交到 github 上
在获取相应的 ip 地址信息后,在相应域名服务商上面设置即可。
1 | # 获取ip地址 |
设置 cname, 在 hexo 项目 source/下创建 CNAME 文件,加入”www.unusebamboo.com",以便
能够顺利的访问。
coding
在创建同用户名的项目之后,进入 pages 服务项,选择部署来源,最后
绑定域名访问地址:www.unusebamboo.com,当然,首先得保证dns配置。
转移配置
对于不在代码块中的相关大括号, 可能会报错, 此时需要进行转义操作, 其中主要是number sign
:
1 | ! ! — 惊叹号 Exclamation mark |