hexo配置
快速构建博客,依托github实现免费的博客
Hexo是一个基于Nodejs的静态博客框架。
使用
| 命令 | 功能 |
|---|---|
| hexo s | 生成预览界面 |
| hexo clean | 清理之前的构建信息,在发布新内容的时候重新连接使用 |
| hexo g | 生成静态页面 |
| hexo d | 上传到github |
| hexo n [post] name | 默认构建post, 可以选择post、page和draft。分别存储在source对应的文件夹下 |
模板
hexo创建文件依据Scaffold文件夹中定义的模板进行。默认就只有可选的三个模板:post,page,draft。也可以自己构建新的模板。
draft: 草稿,并不发布到博客中。
安装
- 需要保证系统中安装了nodejs 和 git
- 使用node安装hexo
1
2-g表示全局安装
npm install hexo-cli -g初始化
创建博客目录,并在该目录下进行hexo的初始化1
2
3
4
5在博客初始化的时候才会只用,拉取官方的hexo配置到指定文件夹
hexo init
然后就可以通过 s 参数进行本地的预览, 通过指定的端口就可以访问本地博客内容,
这里主要用来看看是否能够成功
hexo s通过github托管博客
创建仓库
仓库的名字一定要与用户名一致,并添加 .github.io 方便访问。如我的github名称为ZCDu,那么仓库的名字就为1
ZCDu.github.io
发布博客到github
通过以上步骤,就制定了部署的位置。之后需要hexo插件将markdown编译为HTML页面,类似于mkdocs:1
2
3
4
5
6
7
8修改_config.yaml文件指定的内容,对应deploy部署部分
Deployment
Docs: https://hexo.io/docs/one-command-deployment
注意,冒号之后需要一个空格,隔离参数
deploy:
type: 'git'
repository: https://[GithubToken]@github.com/[GithubUsername]/[GithubBlogRepo].git # 虽然可以使用ssh密钥的形式,但是这里推荐使用Token,具体看自动部署。
branch: main # 与github主分支名相同即可1
2
3
4
5
6
7实现md编译为HTML页面的hexo库, 并部署到github上
npm install hexo-deployer-git --save
生成静态网页,生成的网页存放在public目录下,这里也可以通过将public中的文件全部拷贝到网站的根目录下,
然后启动nginx或者apache服务进行访问
hexo g
对应hexo-deployer-git, 上传页面所需要的内容到github,并不会将整个文件上传
hexo d使用令牌代替密码,由于github安全。也是可以通过ssh来进行只是对应需要修改deploy repository参数,这里推荐使用令牌。
在输入github密码的时候进行。在github setting 最下面 Developer settings的Personal access tokens,创建的令牌最好所有都选上,然后将这个令牌输入密码的部分,之后就可以头通过仓库名来访问博客的为网站,如本博客就是 ZCDu.github.io 进行访问。
发布到gitee
1 | 修改_config.yml的部署配置,增加一个gitee |
与github不同,gitee需要申请gitee page(在服务中申请)。gitee的发布仓库名应该为用户名(这与github不同,少了后缀),gitee page会自动生成对应的gitee.io 方便访问。
注意Gitee部署完成之后还要去官网点击服务
4everland
可以直接通过github的io库自动实现部署。只需要在4everland中导入即可。
图床
注意
阿里云OSS超香的,如果不用图床,整个博客就太大了,不方便使用Github Action,有其是如果使用Gitee的话,空间就更捉襟见肘了。
图床不是必须的!!!背景等图片可以通过网络地址引用,自己的图片如果不大,可以通过gitee(500M压力不大)或github仓库的形式导入。
可以通过直接使用图片网络地址的方式读取网络中的图片,但是并不是所有的网络图片都可以访问,有些图片虽然复制了地址可以在游览器打开,但是发布到博客上就无法显示。当前百度的搜索图片大多是可以的。
遇事不决先买阿里云
阿里云官网->产品->存储->对象存储OSS。购买标准(LRS)存储包-中国大陆通用-40G即可。
进入管理控制台,创建Bucket(刚买的话在右上角的位置),名字没要求,选择一个近的位置。
创建AccessKey
右上角头像AccessKey管理->创建AccessKey(生成的钥匙码最好保存一下,不然之后又要手机验证)。
PicGo
PicGo设置
把不要的图床取消。
设置Server
端口号设置为36677(这步的操作主要是为了和Typora联动,后面会扩展一个Typora)
图床设置
由于本站只配置了阿里云,所以介绍阿里云的配置

keyId和KeySecret为刚刚保存的AccessKey。
设定的存储空间名:入口 阿里云官网->产品->存储->对象存储OSS->控制台-> Bucket列表,这里可看到(其实就是刚刚设置的Bucket名称)
确认存储区域:点击指定的Bucket->概览,外网访问对应的Endpoint,这里.aliyuncs.com的后缀需要去除。就完成了配置。之后拖入图片验证一下是否成功。
联动Typora
偏好设置->图像

PicGo路径为PicGo的exe执行文件的位置,需要选到它。之后验证图片上传选项。之后将图片复制到Typora中会自动上传到PicGo。
页面设置
对应front-matter
注意事项:
- 标签和分类通过- 标签名换行的方式构建。这样才能多标签和分类共存。
- 非原创最好加一个copyright: false 。尊重原作者。现在还能单独设置版权
- cover: img 为每个页面设置封面图片
主题
将需要的主题克隆到themes文件夹下,通过修改_config.yaml文件中的themes选项来进行配置
1 | _config.yaml中的theme |
butterfly常用配置
顶部图
需要设置disable_top_img为false
| 配置 | 功能 |
|---|---|
| index_img | 主页的top_img |
| default_top_img | 默认的top_img,当页面没有配置时显示 |
| archive_img | 归档页的top_img |
| tag_img | tag子页 |
| tag_per_img | tag子页面的top_img,可配置每个tag的top_img |
| category_img | category对应图 |
| category_per_img | category子页对应的图 |
| 其他页面(自建页面,文章页) | 需要到对应页面的front-matter(就是hexo n生成的那部分东西),对应页面设置 |
图标
对应博客中的各个小标识符号,如github的图标,邮箱图标等,都可以在Font Awesome网站找到。
1 | fab fa-github # 表示的是fa-brands fa-github |
需要插件支持
Hexo会自动合并的_config.yml和 _config.butterfly.yml里的配置。具体的配置需要需要查看友链butterfly。这里只介绍几个有多个选项的配置。
评论系统
使用了livere。好处是需要登入才能评论,可以过滤一些垃圾信息。
在Comments System部分,use设置
1 | use: Livere |
livere需要去它的官网注册。然后就可以获取uid:
只需要在config_butterfly.yml中对应的livere项中填入uid即可。
搜索系统
使用本地搜索
1 | 需要安装插件 |
字数统计
1 | npm install hexo-wordcount --save |
自动部署
主要是为了利用github来备份博客源码实现多端同步,同时也能够实现多站点发布。感觉友链forever97提供的教学教学援助。
创建私有仓库
创建一个私有仓库来存放Hexo源码,就是正常的github的构建。
使用私有仓库是因为Github Actions的操作其实就是构建了一个类docker来自动完成完成整个Hexo构建的过程,所以需要给它权限来访问我们的github,这个权限泄露了,自己的github也就泄露了。
Github Token
用来代替密码的保密方式,可以直接通过Token作为密码来访问自己的github。这里用Token主要就是为了安全。
⚠️无法使用ssh密钥,因为Github Actions操作的性质,每次都要重新生成密钥显然是不合适的
在github的Settings中选择 Developer Settings -> Personal access tokens -> generate new token,token名字任意,勾选上repo项。
⚠️Token只有在生成的那一刻会显示,所以必须要复制下来,不然之后就用不了又要重新生成了。
Gitee Token
头像(右上角) -> 设置 -> 私人令牌 -> 生成新令牌。同样要保存好这个Token。
配置_config.yml
修改部署部分代码,这部分也是本地部署时候需要的,即使不使用Github Actions也是需要配置的,用来发布Hexo,如果不适用Action操作,直接本地进行源码的部署,可以使用ssh密钥的形式。考虑到Actions就需要使用Token:
1 | deploy: |
配置gitignore
因为Action会构建一个类docker环境,自己会安装指定的node环境,所以这里需要将本地的环境取消跟踪,可以直接复制:
1 | .DS_Store |
⚠️需要注意,要删除主题文件中的.git文件,git然后包含了子git库会从别处引用,导致本地上传到github的时候没有这个主题库,直接删了这个.git,那么这个主题就不构成git仓库了。
配置Actions
需要在Hexo根目录下创建.github/workflows文件夹,并构建yaml文件,名字可以随意,本站使用autodeploy.yml作为入口。直接照搬了forever97同学的配置,只需要修改git的用户名和邮箱:
1 | 当有改动推送到master分支时,启动Action |
之后只需要将源码push到指定的私有库,然后看看Actions按钮是否启动了了一个Actions就完事了。
问题
- 依靠github库来保存源文件的时候,本地的预览就不太好用了,要安装本地环境就会改动package-lock的信息,多了不必要的更新,哎,愁呀!!
- 博客还不能被搜索引擎检索,这好像是需要域名才能进行的。