本文所有命令均在 Git Bash(hexo 目录右键 → Git Bash Here)中执行,CMD/PowerShell 语法不同,请勿混用
hexo Butterfly主题 5.7 相册系统备份相册系统文件
一、5 个文件是做什么的
| 文件名 |
角色 |
说明 |
必选 |
server.js |
主服务入口 |
相册服务:博客 + 相册 + 照片一体,含密码锁定 |
✅ 必需 |
_album_gen.js |
页面生成器 |
扫描媒体目录 → 生成 source/相册/ 静态页 + 复制封面 |
✅ 必需 |
_gen_thumbs.js |
缩略图生成器 |
大图生成 1600px 压缩图到 G:\_thumbs\,加快加载 |
🔶 可选 |
_protected.json |
密码配置 |
全局密码 + 单个相册密码,格式见下文”修改密码” |
按需 |
_covers.json |
封面配置 |
{ "相册名": "封面文件名.jpg" },视频封面写 "video:视频名.mp4" |
按需 |
二、重装博客后怎么用
| 步骤 |
操作 |
执行内容 |
备注 |
| ① |
放置文件 |
5 个文件复制到新 hexo 博客根目录 |
与 source、_config.yml 同级 |
| ② |
安装依赖 |
npm install sharp |
缩略图用,不用可跳过 |
| ③ |
菜单配置 |
_config.butterfly.yml 的 menu 加一行:相册: /相册/ || fas fa-images |
|| 是主题分隔符,直接粘贴 |
| ④ |
生成相册页 |
node _album_gen.js |
扫描媒体目录生成页面 |
| ⑤ |
构建 |
hexo clean && hexo g |
|
| ⑥ |
启动 |
node server.js 4000 |
端口可自定义 |
| ⑦ |
访问 |
http://localhost:4000/ → 点「相册」 → 输入密码 |
先全局密码,进相册再输相册密码 |
三、媒体目录
| 项目 |
内容 |
| 默认路径 |
G:\(G 盘根目录,每个文件夹 = 一个相册) |
| 换路径生成 |
MEDIA_ROOT='D:\照片' node _album_gen.js |
| 换路径启动 |
MEDIA_ROOT='D:\照片' node server.js 4000 |
四、主题要求
| 项目 |
要求 |
| 主题 |
必须用 Butterfly 主题(或支持 {% gallery %} / {% galleryGroup %} 标签的主题) |
五、修改密码
| 配置项 |
说明 |
"__全局密码__" |
整个相册入口的密码 |
"相册名" |
单个相册的密码(可多个) |
| 修改位置 |
编辑 _protected.json |
六、密码输错锁定
| 配置项 |
默认值 |
说明 |
MAX_ATTEMPTS |
5 |
连续输错次数 |
LOCK_HOURS |
72 |
锁定小时数 |
| 修改位置 |
server.js 顶部 |
— |
| 解锁 |
锁定后输入正确密码会解锁进入 |
— |
| 误锁解锁 |
删除 server.js 同目录 _lock.json 再重启服务 |
— |
七、视频封面
| 项目 |
内容 |
| 需要 |
ffmpeg:winget install ffmpeg |
| 不装影响 |
不影响照片,只是视频封面不自动生成(视频仍可播放) |