将Hexo的Butterfly主题博客部署到GitHub Pages

news/2025/3/3 20:42:33/文章来源:https://www.cnblogs.com/dawnkylin/p/18749262

本文记录完善使用Butterfly主题的Hexo静态博客及将其部署到GitHub Pages的过程中的点点滴滴。


初始化Hexo项目

npm install hexo-cli -g
hexo init <your-blogname>
cd <your-blogname>
npm install

生成的项目中,_config.yml文件和source文件夹将是以后我们常常操作、修改的地方。

_config.yml是配置文件,source包含了许多资源文件,如markdown、img 、js、css、html和搜索的数据文件。markdown位于source/_post文件夹下。

EJS、Stylus和Markdown渲染引擎会默认安装,后面按需取舍。

安装并应用Butterfly主题

参考这篇文章:Butterfly 文檔(一) 快速開始 | Butterfly。

其大致过程就是通过git clonenpm命令安装主题,然后设置_config.ymltheme,接着将themes/butterfly/_config.yml复制到根目录下的_config.butterfly.yml,没有就新建它,它的优先级比_config.yml高。

作者在使用的过程发现使用git clone克隆的主题,在提交时会有警告和提示,然后将其转为sub module就好了。这个问题的根本原因就是themes/butterfly是别人的仓库,我们不能直接修改它。将themes/butterfly.git文件删除也行,但是后续的主题升级就很麻烦。

将使用git clone克隆的主题转为sub module的过程如下:

# 1. 移除已存在的主题目录(保留文件)
git rm --cached themes/butterfly# 2. 添加为子模块
git submodule add https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly# 3. 初始化子模块
git submodule init
git submodule update# 后续更新主题命令
cd themes/butterfly
git pull origin master

配置Buttefly

详细过程在Butterfly 文檔(三) 主題配置 | Butterfly。

我就不全部来一遍了,只记录一些我目前遇到的问题。

头像、顶部图片的存放位置

头像和顶部图片放在source/img下,路径使用相对路径/img/<filename>即可,但是最后生成的地址是要加上<your-blogname>的:https://your-username.github.io/your-blogname/img/<filename>。头像会自动加,顶部图片却不会,需要手动加:

avatar:img: /img/avatar.pngeffect: false# Disable all banner images
disable_top_img: false# If the banner of page not setting, it will show the default_top_img
default_top_img: /hexo-blog/img/default_top_img.jpg

评论系统

vercel被墙,最新评论无法获取,不知道是不是这个原因,基于它的评论插件(如waline)不建议使用,可以使用 Giscus。

搜索引擎

我浅浅配置过algolia,但是搜索效果不理想,网上也找不到详细配置文档,遂弃之,改用本地搜索wzpan/hexo-generator-search: A plugin to generate search data for Hexo.。

字体更换

推荐一个中文免费字体CDN网站:✨中文网字计划-提供便捷实用的全字符集中文渲染方案。

复制喜欢的字体link到_config.butterfly.ymlinject

inject:head:- <link rel='stylesheet' href='https://chinese-fonts-cdn.deno.dev/packages/sypxzs/dist/思源屏显臻宋/result.css' />

再设置相应的字体:

font:global_font_size: 16pxcode_font_size: 16pxfont_family: Consolas, 'Source Han Serif CN for Display'code_font_family: Consolas, 'Source Han Serif CN for Display'

文章的分类语法

此处询问的deepseek:Hexo Butterfly 主题文章分类设置 | dawnkylin's hexo_blog。

部署博客到GitHub Pages

第一步:创建一个名为your-username.github.io的远程仓库。

第二步:创建一个名为your-blogname的仓库。

第三步:初始化你的本地Hexo为一个Git仓库:

git init

第四步:添加远程仓库:

git checkout main
git remote add origin https://github.com/<your-username>/<your-blogname>.git

第五步:修改_config.yml

url: https://<your-username>.github.io/your-blogname  # 关键配置
root: /your-blogname/  # 必须以斜杠开头和结尾# Deployment
deploy:type: gitrepo: github: git@github.com:<your-username>/your-blogname.git  # SSH 地址(推荐)# 或 HTTPS 地址:https://github.com/<your-username>/your-blogname.gitbranch: gh-pages  # 部署到 gh-pages 分支

第六步:设置 GitHub Pages,进入仓库的 Settings → Pages:

  • Branch: gh-pages
  • Path: / (root)

第七步:安装部署插件:

npm install hexo-deployer-git --save

第八步:部署:

hexo clean && hexo g && hexo deploy

这一步会生成public文件夹并将其推送到远程gh-pages分支,然后部署。

也可以配置自动化部署:创建 workflow 文件.github/workflows/deploy.yml

name: Deploy Hexoon:push:branches:- main  # 根据你的源码分支修改jobs:build-and-deploy:runs-on: ubuntu-lateststeps:- name: Checkoutuses: actions/checkout@v4- name: Setup Node.jsuses: actions/setup-node@v4with:node-version: '20'- name: Install Dependenciesrun: |npm install -g hexo-clinpm install- name: Generate Filesrun: |hexo cleanhexo generate- name: Deployuses: peaceiris/actions-gh-pages@v3with:github_token: ${{ secrets.GITHUB_TOKEN }}publish_dir: ./publicpublish_branch: gh-pages

第九步:推送源码到主分支

git add .
git commit -m 'initial commit'
git push origin main

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/893127.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修理牛棚

思路: 有的牛棚住牛,有的是空的,从反过来的思路来想,先用一块木板盖住所有有猪住的猪棚,减去空牛棚数,最终得到最多被木板挡住门的牛棚的数量。 代码展示: #include<bits/stdc++.h> using namespace std; const int N=210; int m,s,c;int a[N],b[N];int main() {c…

写了个 CasaOS/ZimaOS 内网穿透的远程访问插件(不是 frp 或者 nps),欢迎大家测试使用

插件正在提交,应该过几天就会进入市场了。 插件访问效果大概如下: casaOS 远程界面 如果大家想先行测试可以手动下载 pr 的文件进行测试。使用 插件会提供一个二维码,使用OpenIoThub 开源 APP扫码添加插件网关,然后在客户端上添加要访问的主机,然后在主机下面添加端口,然…

20241904 2024-2025-2 《网络攻防实践》第一周作业

​ 一、知识点梳理与总结 1、 实验介绍 1) VM操作系统的三种网络连接方式的适用情况 (1)桥接(Bridged)模式 桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一…

从cURL到GraphQL:不同API类型概述

从cURL到GraphQL:不同API类型概述 API(应用程序编程接口)是现代软件开发的支柱,能够使不同的应用程序进行通信、共享数据并无缝执行任务。了解各种API类型及其实际应用可以为开发人员提供宝贵的见解。本文将探讨不同的API类型、它们的重要性,并通过实际示例说明它们的应用…

【H2O】--【HybrIK】关于RGB2SMPL算法工程HybrIK的安装记录

1. 前言 主要记录关于RGB2SMPL算法工程HybrIK的安装记录。 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流。 如有不对之处,欢迎评论区指出错误,你我共同进步学习! 2. 正文 2.0 torch_tricks model.train()的作用是启用 Batch Normalization 和 Dropout。 m…

粤港澳大湾区-工业软件中心-诚聘CAE测试专家、高性能计算专家、系统工程师、CAE软件架构师、嵌入式软件开发工程师、数据库软件测试工程师等(广州 不限制年龄)

简介 粤港澳大湾区国家技术创新中心工业软件产业发展中心,是粤港澳大湾区国家技术创新中心直属创新平台之一。该中心致力于聚焦工业软件基础创新,构建工业软件全过程创新生态链,为推动我国工业软件产业发展做出重要贡献。 主要目标攻克核心技术: 突破工业软件核心关键技术,…

09 深度神经网络框架的基础:自动微分

当神经网络的层数增加,结构变复杂后,如果只用纯python(再加Numpy)来实现,代码将变得异常复杂,且难以阅读和调试。此时,就需要引入一些著名的深度学习框架了,比如PyTorch, TensorFlow等。 运用这些框架,你往往只需要定义一个神经网络的架构,反向传播过程则是自动完成的…

WebSocket调试工具深度对比:Postman与Apipost功能实测解析

WebSocket调试工具深度对比:Postman与Apipost功能实测解析 作为长期从事实时通讯系统开发的工程师,WebSocket协议在开发中是非常常见的。作为一种常见的 Web 协议,其与 Restful API 有着本质的不同。Restful API是基于请求-响应模式的单向通信,而 WebSocket 提供全双工通信…

leetcode hot 18

解题思路:这题思路就是用某个数据结构记录需要被置0的行和列,一般需要两次遍历。我采用集合的形式,最省空间的方法就是用数组的第一行和第一列来记录,但是要遍历一遍是是否第一行或第一列有0。 class Solution {public void setZeroes(int[][] matrix) {Set<Integer> …

中国版Workday从上千家大型跨国企业的实践总结:员工体验很重要

20世纪90年代中期,从Oracle、SAP等国外ERP巨头进入中国,并拿下华为、联想等一流企业,至今也依然保持着中国市场的优势地位。即便到了“国外企业应用软件在中国逐步式微”的今天,SAP约10000亿元的市值,也远超用友的约1000亿元市值。其中很大一个原因在于,中国企业的聪明—…

易路iBuilder—国内首个HR智能体管理平台,高效管理企业数字劳动力

易路iBuilder智能体平台不仅是工具集合,更是企业数字化转型的 “智能中枢”。它通过知识驱动、流程重构、人机共融,帮助企业将AI Agent从“执行者”升级为“战略伙伴”,最终实现 “人类定义价值,机器放大价值”的新工作范式。随着大模型技术的商业应用日益成熟,AI数字员工…