从零开始搭建个人博客:Hexo + Butterfly
前言
一直想搭建一个个人博客,记录自己的技术成长和思考(主要是想有个地方记录踩过的坑,免得下次又忘了 😂)。经过一番调研,最终选择了 Hexo + Butterfly 主题。这篇文章记录一下搭建过程和一些踩坑经历(真的踩了好多坑…)。
为什么选择 Hexo?
1. 静态站点生成器
Hexo 是一个快速、简洁且高效的博客框架,使用 Markdown 编写文章,然后生成静态 HTML 文件。
优点:
- 速度快:静态文件,访问速度快
- SEO友好:静态HTML,搜索引擎容易索引
- 免费托管:可以部署到 GitHub Pages、Netlify 等免费平台
- 版本控制:文章用 Markdown 编写,可以用 Git 管理
2. 丰富的主题
Hexo 有丰富的主题生态,我选择了 Butterfly 主题,因为:
- 界面美观:现代化的设计风格
- 功能丰富:支持代码高亮、搜索、评论等
- 文档完善:中文文档详细,配置简单
- 持续更新:社区活跃,问题能及时解决
搭建过程
1. 环境准备
1 | # 安装 Node.js(需要 12.0 以上版本) |
2. 初始化项目
1 | # 创建博客目录 |
3. 安装 Butterfly 主题
1 | # 安装主题 |
4. 配置主题
修改 _config.yml:
1 | # 站点配置 |
5. 本地预览
1 | # 启动本地服务器 |
踩坑经历
1. 中文路径问题
问题:文章标题包含中文时,生成的URL包含中文,可能导致404。
解决:在 _config.yml 中配置:
1 | permalink: :year/:month/:day/:title/ |
或者使用英文标题,在文章中使用 title 字段。
2. 图片路径问题
问题:Markdown 中的图片路径不正确。
解决:使用 Hexo 的资源文件夹功能:
1 | post_asset_folder: true |
然后在文章中:
1 |  |
3. 代码高亮问题
问题:代码高亮不生效。
解决:安装代码高亮插件:
1 | npm install hexo-prism-plugin --save |
在 _config.yml 中配置:
1 | prism_plugin: |
4. 搜索功能
问题:本地搜索不工作。
解决:安装搜索插件:
1 | npm install hexo-generator-searchdb --save |
配置:
1 | search: |
5. 部署到 GitHub Pages
问题:部署后样式丢失。
解决:检查 _config.yml 中的 url 配置,确保与 GitHub Pages 地址一致。
1 | url: https://ahzlll.github.io |
博客配置
1. 添加友链
创建 source/_data/link.yml:
1 | - class_name: 技术博客 |
2. 自定义样式
创建 source/css/custom-green-theme.css:
1 | /* 自定义样式 */ |
在主题配置中引入:
1 | inject: |
3. 添加统计
使用不蒜子统计:
1 | busuanzi: |
写作体验
1. Markdown 编写
使用 Markdown 编写文章,简单高效:
1 | --- |
2. 代码高亮
支持多种语言的代码高亮:
1 | ```java |
3. 数学公式
支持 LaTeX 数学公式:
1 | $$ |
部署流程
1. 生成静态文件
1 | hexo generate |
2. 部署到 GitHub Pages
1 | # 安装部署插件 |
3. 自动化部署
可以使用 GitHub Actions 实现自动化部署:
1 | name: Deploy Blog |
使用体验
优点
- 写作简单:Markdown 语法,专注内容
- 部署方便:一键部署到 GitHub Pages
- 主题丰富:Butterfly 主题功能完善
- 性能优秀:静态站点,访问速度快
- SEO友好:搜索引擎容易索引
缺点
- 需要本地环境:需要安装 Node.js
- 更新需要重新生成:每次更新需要重新生成静态文件
- 评论功能:需要第三方服务(如 Valine、Gitalk)
未来计划
- 内容优化:持续输出高质量的技术文章
- 功能完善:添加评论、搜索等功能
- 性能优化:优化加载速度,提升用户体验
- SEO优化:提升搜索引擎排名
总结
搭建个人博客是一个很好的学习过程,不仅能记录技术成长,还能锻炼写作能力。Hexo + Butterfly 是一个很好的选择,简单易用,功能丰富。
如果你也想搭建个人博客,可以参考我的配置:
写在最后
博客搭建只是第一步,更重要的是持续输出有价值的内容(虽然不知道能坚持多久 😅)。希望自己能坚持下去,记录技术成长,分享开发经验。如果文章有错误,欢迎指正!
