23年暑假看这个视频BV1st411r7Sj学git的时候偶然发现github可以托管像hexo这种无后端的博客框架,参考一些教程(比如BV1NY4y1C7Ng)自己用hexo+github搓了个博客。
有些东西长久不用就忘记了,写个文档记录一些常用的操作和踩过的坑。

博客主题的选择

用的Butterfly:Butterfly - A Simple and Card UI Design theme for Hexo

图片上传

像语雀这种存在防盗链机制的文章即使导出的是Markdown格式图片在博客上也是不能显示的,一种简单的方法是在语雀端插入图片的时候不要直接插入,这样图片是放在语雀图床里面的,可以放在别的图床比如https://sm.ms/home/等并将其用图床外链放到语雀写作端就没有问题因为图片并没有存在语雀图床里面。还有一种就是开超级会员获取token,这样就可以不用将语雀上的内容导出就可以在博客上显示。

将博客托管至GitHub

参考0成本使用Hexo框架搭建个人博客并托管至Github-Pages/#将博客托管至GitHub (2025/02/25upd:这个博客地址好像换了,安装环境和配置可以参考这篇这篇 和上面的视频 )

1
2
3
4
cd xxxx.github.io
git add --all
git commit -m "message"
git push

pdf文件的插入

参考hexo post中pdf文件的插入,下载依赖的时候如果网络原因报错可以加镜像源,参考解决npm下载慢慢慢慢的问题

文章中latex公式的渲染问题

好像hexo更新之后一些依赖也跟着更了然后之前改好了的latex就炸了,参考在Hexo中渲染MathJax数学公式解决数学公式的渲染问题

添加文章置顶功能

https://blog.csdn.net/weixin_43372529/article/details/114176470
卸载hexo-generator-index,然后安装hexo-generator-index-pin-top,

1
2
npm uninstall hexo-generator-index --save
npm install hexo-generator-index-pin-top --save

然后在文章的头文件中加上top:true即可

资源文件的迁移/上传至github

换了新电脑。记录一下怎么把博客移过去

一开始我是习惯把博客的公开仓库也存到这个博客项目中,但是这样的话我在把我博客的资源文件同步到github的时候就会有一些问题,因为git觉得一个项目里面有两个.git会比较混乱。

所以我改了改_config.yml文件,在这个里面我这样设置:

1
2
3
4
deploy:
type: git
repo: https://github.com/z01prime/z01prime.github.io.git
branch: main # 写库分支名。如果公开库是master分支,这里就写master

安装自动化插件:

1
npm install hexo-deployer-git --save

之后每次更新博客直接用这个指令:

1
hexo clean && hexo g -d

表示先删除根目录下的public文件夹和缓存文件,生成静态文件,然后根据在_config.yml里写的deploy地址,把 public 文件夹里的内容推送到GitHub仓库。

创建一个新的库,我命名为HexoBlogResource,我习惯把资源文件设置为私有。

在当前目录下输入指令,给Git添加一个远程仓库:

1
git remote add origin https://github.com/z01prime/HexoBlogResource.git

然后向库里面添加本地文件:

1
2
git add .
git commit -m "上传文件"

注意git add .的时候,会出现说:

1
2
3
4
5
6
7
8
9
adding embedded git repository: themes/butterfly
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint: git submodule add <url> themes/butterfly
hint: If you added this path by mistake, you can remove it from the index with:
hint: git rm --cached themes/butterfly
hint: See "git help submodule" for more information.

这个是因为我在之前好像是下butterfly这个主题的时候,他顺带着把.git给克隆了,删了就行,反正我也不打算用它更新后的默认主题

把代码推送到远程仓库(当然在这之前删掉我之前保存在本地这个文件夹下的博客公开仓库项目):

1
git push -u origin main

-u这是一个深度绑定参数(Upstream)。执行一次后,Git会记住要把本地的main分支推送到origin的main分支。以后只需要简单输入 git push,它就自动知道往哪传了

hexo下面的gitignore一般是:

1
2
3
4
5
6
7
8
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
_multiconfig.yml

这些都是会在上传的时候忽略的项目。

接下来是新电脑的配置。

安装Node.js,因为Hexo是基于Node.js运行的程序。安装Git。

下载全局 Hexo 工具:

1
npm install -g hexo-cli

在新电脑上全局安装 Hexo 的控制台指令集,类似于全局变量,这样就保证以后在任何文件夹里输入hexo开头的指令,电脑都能识别。

重新下回资源:

1
git clone https://github.com/z01prime/HexoBlogResource.git blog

这里会要求我登录账号,登陆一下就行。如果出现报错说两部上服务器,那要开梯子走代理,设置全局代理:

1
2
git config --global http.proxy http://127.0.0.1:7899
git config --global https.proxy http://127.0.0.1:7899

端口因人而异,我的是7899,然后把npm包下回来,当然在这之前也要配置代理:

1
2
npm config set proxy http://127.0.0.1:7899
npm config set https-proxy http://127.0.0.1:7899

然后

1
npm install

把包下回来。

然后注意在新电脑上如果hexo d,那么需要告诉Git自己的身份:

1
2
git config --global user.email "your_email@example.com"
git config --global user.name "z01prime"

之后这个新电脑上也可以用hexo d了。