Hexo 框架
介绍
官网:Hexo
主题:
实例:
- stun 主题:OrangeX4's Blog
- butterfly 主题:Risc_lt的杂货铺 - Code/Life Balence
参考资料:
- Hexo 入门
- 官方:matery主题基本设置
- Matery主题搭建与优化教程超详细解析 - 小弋の生活馆
- 基于 Hexo 从零开始搭建个人博客系列 - 唐志远(butterfly 主题)
- Hexo 标签 - Lu's blog(matery 主题)
- 标签: Hexo - Justlovesmile's BLOG(butterfly 主题,含如何展示 pdf 内容)
- 小弋の生活馆全样式预览 - 小弋の生活馆(matery 主题,酷炫的标签外挂)
- Hexo 压缩静态文件 - Argvchs の小窝
- 资源压缩部署加速网站访问(A4 主题)
使用
快速搭建
- 快速搭建(以 butterfly 主题为例)
# 安装 hexo
npm install -g hexo-cli
# 初始化
hexo init hexo-project & cd $_ # 方式 1
mkdir hexo-project & cd $_ & hexo init # 方式 2
# 安装依赖
npm i
# 安装主题
# 非 butterfly,建议将 theme 中的 .git 删除
git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
# 安装主题依赖
npm i hexo-theme-butterfly --save
# 将 CNAME 文件放入 source 目录,以解析域名
- 目录结构
source/_posts/
: post 文件夹;md 文档可直接全部放于此,也可归类成子目录再放于此
├── _config.yml # 配置文件
├── package.json # 应用信息
├── scaffolds/ # 模板文件夹
├── source/ # 源文件夹
| └── _posts/ # post 文件夹
└── themes/ # 主题文件夹
配置文件
_config.yml
themes/XXX/_config.yml
_config.yml
修改内容:title
:网站标题subtitle
:副标题description
:网站描述keywords
:网站关键词author
:作者language
:语言timezone
:时区url
:网址;https://username.github.io/repo
(project page)theme
:主题;butterfly、hexo-theme-matery 等
_config.theme.yml
修改内容:自定义修改
常用命令
# 构建
hexo g # hexo generate; npm run build
hexo g --watch # 监视文件变动
hexo g --debug # debug
# 实时预览
hexo s # hexo server; npm run server
hexo s -p 5000 # 更改端口
# 部署
hexo d # hexo deploy; npm run deploy
hexo g -d # 构建后部署
# 清除缓存文件 db.json 和静态文件 public/
hexo clean # hexo cl
部署
- 设置
_config.yml
中deploy
选项(需安装 hexo-deployer-git 插件)
deploy:
type: git
# repo public private 都可以
repository: [email protected]:username/repo.git
branch: main
- Github Actionsi:示例如下
name: Hexo deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Use latest Node.js
uses: actions/setup-node@v4
with:
node-version: latest
- name: Cache NPM dependencies
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.OS }}-npm-cache
restore-keys: |
${{ runner.OS }}-npm-cache
- name: Install Dependencies
run: npm install
- name: Build
run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
插件
hexo-generator-index/archive/category/tag:初始化 hexo 项目会自动安装;生成主页 / 归档 / 分类 / 标签文件夹
hexo-abbrlink:生成短链接,而非 post 中的 md 文件名
# permalink: :year/:month/:day/:title/
permalink: posts/:abbrlink.html
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks
- hexo-blog-encrypt:文章加密,只需要在 md 的文件 Front Matter 加上:
password: ...
- hexo-generator-feed:生成 RSS 订阅 xml 文件
feed:
enable: true
type: atom
path: atom.xml
limit: 20
- hexo-generator-index-pin-top:文章置顶,只需要在 md 的文件 Front Matter 加上:
top: true
hexo-algoliasearch 或 hexo-algolia:algolia 搜索;更美观(hexo butterfy,docusaurus 支持,mkdocs 将支持)
hexo-generator-search/searchdb:本地搜索设置
hexo-tag-publications:由 bib 文件生成论文统计与信息展示网页(可单个、全部论文)。
- 在页面添加论文概要图片,在 bib 文件中的对应条目下添加
image
参数
- 在页面添加论文概要图片,在 bib 文件中的对应条目下添加
主题相关设置
- butterfly 主题文章置顶 front-matter 参数:
sticky
,数值越大,置顶优先级越大 - matery 主题文章置顶 front-matter 参数:
top
,数值为true
或false
butterfly
- 菜单栏 menu(分类、标签、存档;友链、关于、音乐、视频、相册等暂无必要)
- 网站 logo、个人头像、social 相关信息
- 代码
- 目录
- banner 图片
- 文章封面(front-matter 中 cover 选项不填参数)
- 评论系统
- 搜索系统
- 页面加载效果
- post 元信息(分类、标签、时间、字数统计、需阅读时间等)
- 侧边栏(butterfly)
- Footer
- 内容复制时、文章底部版权相关信息
- 图片懒加载
- 相册(暂无必要)
- 右下角功能按钮(深/浅色切换,直达页面顶部等功能)
- 添加音乐、视频页面(音乐可全局吸底)
matery
已解决/实现:
[x] 首页设置的音乐播放功能;文章内部音乐播放设置功能;如何设置单独页面音乐播放
[x] 单独视频页面效果如何制作(和单独相册页面类似,但简单一些;如何放入多个视频?)
[x] 离开博客标签页,出现可爱字体
[x] 屏蔽网页源码(单纯的屏蔽鼠标右键和键盘事件;慎重添加)
[x] 设置评论系统
- 采用 waline(可以实现不登录即可提交评论,也可以登录提交评论)快速上手 - Waline
- valine 无人维护更新
- 使用 gitalk 遇到的一些问题:其他人登录评论系统会出现 “ 网络错误 ”;所需要的权限过多
[x]
hexo d
后,CNAME 文件会被删除 hexo部署后,CNAME会被自动删除,怎么办? - 知乎:将需要上传至 GitHub 的内容放在 source 目录,例如 CNAME、favicon.ico、images 等[x] PC 端访问人数和访问量消失;手机端无看板娘,访问人数和访问量正常 基于Hexo的matery主题搭建博客常见问题篇6 | 夜法之书
[x] RSS 订阅功能 你可以用 RSS 订阅我的博客了 - 彭宏豪的个人博客,个人电子产品使用心得、GitHub - anyant/rssant: 蚁阅 - 让 RSS 更好用,轻松订阅你喜欢的博客和资讯
[ ] 不显示文章的图片和 summary,文章内容只能跳转到原链接上看
[x] 博客密码 在线加密解密、请问大佬这个文章密码的具体配置写法是什么样的? · Issue #362 · blinkfox/hexo-theme-matery · GitHub
md 文章中的 password 键的值需填写 SHA256 加密后的值
博客文章输入的值为 SHA256 加密前的原值
有破解的方法
[x] 背景颜色:修改前:
#4cbf30
,#0f9d58
;现在的:#d9ed92
#99d98c
;修改后:48cae4
0096c7
[x] 博客插入音乐、B 站视频 hexo博客插入b站视频 - Lyz
<!-- markdown 中插入 B 站视频语法格式 -->
<div
style="position: relative; width: 100%; height: 0; padding-bottom: 75%;">
<iframe
src="//player.bilibili.com/player.html?aid=984726281&bvid=BV1Nt4y1n7hv&cid=807808976&page=1"
scrolling="no"
border="0"
frameborder="no"
framespacing="0"
allowfullscreen="true"
style="position: absolute; width: 100%;height: 100%; left: 0; top: 0;">
</iframe>
</div>
- [x] 修改滚动条:在
themes/Matery/source/css/matery.css
添加代码 - [x] 添加 loading-page(加载动画)Matery 添加加载动画 | 斯莫笔记
- [x] 添加导航页(里面的相关链接待修改;必要性不大)
- [x] 添加标签外挂(其他框架可能无法使用) 小弋の生活馆全样式预览 | 小弋の生活馆
待解决/实现
- [ ] 博客底部的文章链接出现 2 个 hexo-demo,暂无法解决
- [ ] CDN 加速
- [ ] 添加 GitHub badge(添加代码的位置需自己调整,尽量恰当)
- [ ] 添加思维导图渲染
- [ ] markdown 的复选框在 hexo 中无法正确渲染
- [ ] 让博客支持通知功能
- [ ] 豆瓣书单电影页面
- [ ] 自定义主题字体
- [ ] 相册的宽度和高度大小设置在 matery.css 文件中
- [ ] 测试 404 页面(404 页面未起作用)
- [ ] 换装、对话的看板娘(有些复杂;暂无必要)GitHub - stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platform
- [ ] 为 Hexo 博客中的 Markdown 添加卡片式链接支持 为 Hexo 博客中的 Markdown 添加卡片式链接支持 - OrangeX4's Blog
- [ ] “关于” 页面添加简历