自动清理hexo缓存的脚本

wen 实用脚本 8

本文目录导读:

自动清理hexo缓存的脚本

  1. 方案一:Windows 批处理脚本 (.bat)
  2. 方案二:Shell 脚本 (Linux/macOS)
  3. 方案三:带日志记录的高级版 (Shell)
  4. 方案四:使用 Node.js 脚本 (跨平台)
  5. 使用建议

这里为您提供几个用于自动清理 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

使用方法:

  1. 在 Hexo 根目录右键 → 新建文本文档
  2. 粘贴上述代码
  3. 将文件重命名为 clean-hexo.bat(注意扩展名改为 .bat)
  4. 双击运行即可

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 "========================================"

使用方法:

  1. 将上述代码保存为 clean-hexo.sh
  2. 给文件添加执行权限:chmod +x clean-hexo.sh
  3. 运行脚本:./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}`);
    }
});

使用建议

  1. 推荐使用方案一(Windows)或方案二(Linux/macOS),简单可靠
  2. 如果经常需要清理,可以将脚本添加到系统定时任务(cron 或任务计划程序)实现自动化
  3. 对于生产环境部署,建议在脚本中加入 hexo deploy 步骤自动部署到服务器

您可以根据自己的操作系统选择适合的脚本方案,如果需要定时自动清理,我可以帮您补充定时任务的配置方法。

抱歉,评论功能暂时关闭!