完整的项目重建经验总结
项目重建完整经验总结
这篇文章记录了如何从零开始使用 Hexo + Butterfly 主题重建个人博客站点的完整过程,包括所遇到的问题和解决方案。
第一阶段:需求分析与规划
确定目标
- 保留原个人身份信息(用户名、描述等)
- 参考已有的站点风格和布局
- 保持内容的连贯性
- 提升站点的整体性能
技术选型
- 静态站点生成器: Hexo 7.3.0(Node.js 18 兼容)
- 主题: Butterfly 5.5.4(功能完整,定制性强)
- 渲染器: Pug + Stylus(Butterfly 依赖)
- 部署: 静态文件到 /var/www/html
资源获取
- 克隆参考项目 (handsomelky/handsomelky.github.io)
- 提取关键 CSS 文件(ref-index.css, ref-equipment.css)
- 分析页面结构和交互设计
第二阶段:环境搭建与初始化
环境检查
1 | # 检查 Node.js 版本 |
安装主题和依赖
1 | # 安装 Butterfly 主题 |
第三阶段:配置与定制
基础配置
在 _config.yml 中设置:
1 | title: Funtt's Lab |
主题配置
复制 themes/butterfly/_config.yml 到项目根目录作为 _config.butterfly.yml,进行定制:
1 | # 导航菜单 |
遇到的第一个问题:Stylus @extend 兼容性
问题: Butterfly 主题的 post.styl 使用 @extend .fontawesomeIcon,在 Node 18 上编译失败。
错误信息:
1 | Error: Undefined variable: ".fontawesomeIcon" |
根本原因: Font Awesome 6 配置变更,.fontawesomeIcon 类不再定义。
解决方案: 修改 themes/butterfly/source/css/_layout/post.styl,用基础字体替代:
1 | .post-meta-code |
第四阶段:样式与交互优化
CSS 资源整合
创建 source/css/optimize.css 统一管理自定义样式:
1 | /* 卡片样式优化 */ |
在 _config.butterfly.yml 中注入
1 | inject: |
第五阶段:功能模块实现
Live2D 交互式看板娘
创建 source/js/live2d-init.js:
1 | window.Live2DInitPlugin = { |
动态标题效果
集成 FunnyTitle.js:
1 | const titles = [ |
第六阶段:测试与验证
构建和本地预览
1 | # 清理旧的构建 |
检查清单
- 页面加载速度
- 样式和布局是否正确
- 响应式设计(移动端)
- 图片加载
- JavaScript 功能
- SEO 元数据
遇到的第二个问题:样式冲突
问题: 某些参考 CSS 与 Butterfly 原生样式冲突,导致页面布局混乱。
解决方案: 使用 CSS 层叠和特异性优化:
1 | /* 在 optimize.css 中明确覆盖 */ |
第七阶段:部署与维护
部署流程
1 | # 生成输出 |
定期维护任务
- 更新依赖包:
npm update - 备份重要文件和配置
- 监控页面性能指标
- 定期发布新文章
第八阶段:工作流优化
快速发布脚本
创建 deploy.sh:
1 |
|
文章模板
在 archetypes/default.md 定义:
1 |
|
经验总结与建议
成功的关键因素
- 充分的规划: 明确目标和技术选型
- 遇到问题及时解决: 不要积累技术债
- 充分的测试: 确保部署前的质量
- 文档化过程: 方便后期维护和升级
可改进的方向
- 自动化测试流程
- 更详细的错误日志记录
- 性能监控和优化
- CI/CD 流水线集成
推荐的扩展方向
- 评论系统集成(Valine, Waline)
- 分析工具(Google Analytics, Umami)
- 图片优化(WebP 转换,CDN)
- 全文搜索(Algolia, Local Search)
项目周期: 10 天
总投入时间: 约 40 小时
最终成果: 高性能、定制化的个人博客
难度评级: 中级
推荐指数: ⭐⭐⭐⭐⭐