本文目录导读:

这里为您提供几个用于自动清理 Hexo 缓存的脚本方案,分别适用于 Windows(批处理)和 macOS/Linux(Shell)。
Windows 批处理脚本 (.bat)
将此代码保存为 clean-hexo.bat,放在 Hexo 博客根目录下。
@echo off
chcp 65001 >nulHexo 自动清理与重建
echo ========================================
echo Hexo 缓存自动清理脚本
echo ========================================
echo.
:: 清理 Hexo 缓存 (db.json 和 public 文件夹)
echo [1/3] 正在清理 Hexo 缓存...
call hexo clean
if %errorlevel% neq 0 (
echo [错误] hexo clean 执行失败,请确认已安装 hexo-cli
pause
exit /b %errorlevel%
)
echo [完成] 缓存清理成功!
echo.
:: 重新生成静态文件
echo [2/3] 正在重新生成静态文件...
call hexo generate
if %errorlevel% neq 0 (
echo [错误] hexo generate 执行失败
pause
exit /b %errorlevel%
)
echo [完成] 静态文件生成成功!
echo.
:: 启动本地预览服务器
echo [3/3] 正在启动本地服务器...
echo 提示:访问 http://localhost:4000 预览
echo 按 Ctrl+C 停止服务器
echo.
call hexo server
echo.
pause
使用方法:
- 在 Hexo 根目录右键 → 新建文本文档
- 粘贴上述代码
- 将文件重命名为
clean-hexo.bat(注意扩展名改为 .bat) - 双击运行即可
Shell 脚本 (Linux/macOS)
将此代码保存为 clean-hexo.sh,放在 Hexo 博客根目录下。
#!/bin/bash
# Hexo 缓存自动清理与部署脚本
# 适用于 Linux/macOS 系统
set -e # 遇到错误立即退出
echo "========================================"
echo " Hexo 缓存自动清理脚本"
echo "========================================"
echo ""
# 获取当前时间,用于日志
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$TIMESTAMP] 开始执行清理..."
# 检查是否在 Hexo 目录下
if [ ! -f "_config.yml" ]; then
echo "[错误] 请在 Hexo 博客根目录下运行此脚本!"
exit 1
fi
# 清理缓存
echo "[1/3] 正在清理 Hexo 缓存..."
npx hexo clean
echo "[完成] 缓存清理成功!"
echo ""
# 生成静态文件
echo "[2/3] 正在重新生成静态文件..."
npx hexo generate
echo "[完成] 静态文件生成成功!"
echo ""
# 询问是否启动服务器
read -p "[3/3] 是否启动本地服务器?(y/n): " start_server
if [ "$start_server" = "y" ] || [ "$start_server" = "Y" ]; then
echo "正在启动本地服务器..."
echo "提示:访问 http://localhost:4000 预览"
echo "按 Ctrl+C 停止服务器"
echo ""
npx hexo server
fi
echo ""
echo "========================================"
echo " 脚本执行完毕"
echo "========================================"
使用方法:
- 将上述代码保存为
clean-hexo.sh - 给文件添加执行权限:
chmod +x clean-hexo.sh - 运行脚本:
./clean-hexo.sh
带日志记录的高级版 (Shell)
这个版本会记录每次操作的日志文件,方便排查问题。
#!/bin/bash
# Hexo 缓存自动清理脚本 (带日志记录)
# 作者: AI Assistant
# 版本: 1.1
set -e
# 配置
LOG_DIR="logs"
LOG_FILE="${LOG_DIR}/clean-$(date "+%Y%m%d-%H%M%S").log"
# 颜色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# 创建日志目录
mkdir -p "$LOG_DIR"
# 日志函数
log() {
local level=$1
local message=$2
local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
echo -e "[${timestamp}] [${level}] ${message}" | tee -a "$LOG_FILE"
}
# 检查 Hexo 环境
check_hexo() {
if ! command -v npx &> /dev/null; then
log "ERROR" "npx 未安装,请先安装 Node.js"
exit 1
fi
if [ ! -f "_config.yml" ]; then
log "ERROR" "请在 Hexo 博客根目录下运行此脚本"
exit 1
fi
}
# 主函数
main() {
echo "========================================"
echo " Hexo 缓存自动清理脚本"
echo " 日志文件: ${LOG_FILE}"
echo "========================================"
echo ""
log "INFO" "开始执行 Hexo 清理任务"
# 检查环境
check_hexo
# 清理缓存
log "STEP" "正在清理 Hexo 缓存..."
if npx hexo clean >> "$LOG_FILE" 2>&1; then
log "SUCCESS" "缓存清理完成"
else
log "ERROR" "缓存清理失败,请查看日志文件"
exit 1
fi
# 生成静态文件
log "STEP" "正在重新生成静态文件..."
if npx hexo generate >> "$LOG_FILE" 2>&1; then
log "SUCCESS" "静态文件生成完成"
else
log "ERROR" "静态文件生成失败,请查看日志文件"
exit 1
fi
# 显示结果
echo ""
log "INFO" "任务完成!"
echo "生成的文件存储在: $(pwd)/public/"
echo "日志文件位置: $(pwd)/${LOG_FILE}"
}
# 执行主函数
main
# 询问是否启动服务器
echo ""
read -p "是否启动本地服务器进行预览?(y/n): " start_server
if [ "$start_server" = "y" ] || [ "$start_server" = "Y" ]; then
echo "启动服务器中..."
npx hexo server
fi
使用 Node.js 脚本 (跨平台)
如果你希望一个跨平台、无需区分操作系统的解决方案:
// save as clean-hexo.js
// 运行: node clean-hexo.js
const { execSync } = require('child_process');
const path = require('path');
const fs = require('fs');
// 颜色输出
const colors = {
green: '\x1b[32m',
yellow: '\x1b[33m',
red: '\x1b[31m',
reset: '\x1b[0m'
};
console.log(`${colors.green}========================================`);
console.log(' Hexo 缓存自动清理脚本');
console.log(`========================================${colors.reset}\n`);
// 检查是否在 Hexo 目录
if (!fs.existsSync('_config.yml')) {
console.error(`${colors.red}[错误] 请在 Hexo 博客根目录下运行此脚本!${colors.reset}`);
process.exit(1);
}
// 执行命令并处理错误
function runCommand(command, description) {
try {
console.log(`${colors.yellow}[步骤] ${description}...${colors.reset}`);
execSync(command, { stdio: 'inherit', cwd: process.cwd() });
console.log(`${colors.green}[完成] ${description}成功!${colors.reset}\n`);
} catch (error) {
console.error(`${colors.red}[错误] ${description}失败:${error.message}${colors.reset}`);
process.exit(1);
}
}
// 1. 清理缓存
runCommand('npx hexo clean', '清理 Hexo 缓存');
// 2. 重新生成
runCommand('npx hexo generate', '重新生成静态文件');
// 3. 询问是否启动服务器
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
readline.question(`是否启动本地服务器?(y/n): `, (answer) => {
readline.close();
if (answer.toLowerCase() === 'y') {
console.log(`${colors.yellow}启动本地服务器中...${colors.reset}`);
console.log('访问 http://localhost:4000 预览');
runCommand('npx hexo server', '启动本地服务器');
} else {
console.log(`${colors.green}脚本执行完毕!${colors.reset}`);
}
});
使用建议
- 推荐使用方案一(Windows)或方案二(Linux/macOS),简单可靠
- 如果经常需要清理,可以将脚本添加到系统定时任务(cron 或任务计划程序)实现自动化
- 对于生产环境部署,建议在脚本中加入
hexo deploy步骤自动部署到服务器
您可以根据自己的操作系统选择适合的脚本方案,如果需要定时自动清理,我可以帮您补充定时任务的配置方法。