自动清理Composer缓存的脚本

wen 实用脚本 1

本文目录导读:

自动清理Composer缓存的脚本

  1. Linux/macOS 版本
  2. Windows 批处理版本 (clean_composer_cache.bat)
  3. 使用说明
  4. 定时自动清理(可选)
  5. 注意事项

Linux/macOS 版本

#!/bin/bash
# Composer缓存清理脚本
# 自动检测并清理Composer缓存目录
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}    Composer 缓存自动清理工具${NC}"
echo -e "${GREEN}========================================${NC}"
# 检测Composer是否安装
if ! command -v composer &> /dev/null; then
    echo -e "${RED}错误: Composer 未安装或不在PATH中${NC}"
    exit 1
fi
# 获取当前Composer版本
COMPOSER_VERSION=$(composer --version 2>&1)
echo -e "${YELLOW}当前Composer版本: ${COMPOSER_VERSION}${NC}"
# 获取缓存目录
CACHE_DIR=$(composer config cache-dir 2>/dev/null)
if [ -z "$CACHE_DIR" ]; then
    # 如果无法获取配置,使用默认路径
    if [[ "$OSTYPE" == "darwin"* ]]; then
        CACHE_DIR="$HOME/Library/Caches/composer"
    elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
        CACHE_DIR="$HOME/.cache/composer"
    else
        CACHE_DIR="$HOME/.composer/cache"
    fi
fi
echo -e "${YELLOW}缓存目录: ${CACHE_DIR}${NC}"
# 检查缓存目录是否存在
if [ ! -d "$CACHE_DIR" ]; then
    echo -e "${YELLOW}缓存目录不存在,无需清理${NC}"
    exit 0
fi
# 显示当前缓存大小
echo -e "\n${YELLOW}当前缓存大小:${NC}"
du -sh "$CACHE_DIR" 2>/dev/null
# 确认清理(可设置自动确认)
if [ "$1" != "-y" ]; then
    read -p "是否要清理Composer缓存? (y/n): " confirm
    if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
        echo -e "${YELLOW}操作已取消${NC}"
        exit 0
    fi
fi
# 执行清理
echo -e "\n${YELLOW}正在清理Composer缓存...${NC}"
# 方法1: 使用composer自带的清理命令(推荐)
composer clear-cache 2>&1
if [ $? -eq 0 ]; then
    echo -e "${GREEN}✓ Composer缓存已清理完成${NC}"
else
    # 如果composer命令失败,手动清理
    echo -e "${YELLOW}尝试手动清理缓存文件...${NC}"
    rm -rf "$CACHE_DIR"/* 2>/dev/null
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✓ 缓存文件已手动清理${NC}"
    else
        echo -e "${RED}× 清理失败,请检查权限${NC}"
        exit 1
    fi
fi
# 显示清理后的结果
echo -e "\n${YELLOW}清理后缓存大小:${NC}"
if [ -d "$CACHE_DIR" ]; then
    du -sh "$CACHE_DIR" 2>/dev/null || echo "0B"
else
    echo "0B"
fi
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}    清理完成!${NC}"
echo -e "${GREEN}========================================${NC}"

Windows 批处理版本 (clean_composer_cache.bat)

@echo off
chcp 65001 >nul
REM Composer缓存清理脚本 (Windows版)Composer 缓存自动清理工具
echo ========================================
echo     Composer 缓存自动清理工具
echo ========================================
REM 检测Composer是否安装
where composer >nul 2>nul
if %errorlevel% neq 0 (
    echo [错误] Composer 未安装或不在PATH中
    pause
    exit /b 1
)
REM 获取Composer版本
for /f "tokens=*" %%i in ('composer --version 2^>nul') do set COMPOSER_VER=%%i
echo 当前Composer版本: %COMPOSER_VER%
REM 获取缓存目录
for /f "tokens=*" %%i in ('composer config cache-dir 2^>nul') do set CACHE_DIR=%%i
if "%CACHE_DIR%"=="" (
    set CACHE_DIR=%APPDATA%\Composer\cache
)
echo 缓存目录: %CACHE_DIR%
REM 检查缓存目录是否存在
if not exist "%CACHE_DIR%" (
    echo 缓存目录不存在,无需清理
    pause
    exit /b 0
)
REM 显示当前缓存大小
echo.
echo 正在计算缓存大小...
for /f "tokens=3" %%i in ('dir /s /a "%CACHE_DIR%" 2^>nul ^| findstr /i "文件"') do set CACHE_SIZE=%%i
echo 当前缓存大小: %CACHE_SIZE%
REM 确认清理
if not "%1"=="-y" (
    set /p CONFIRM="是否要清理Composer缓存? (y/n): "
    if /i not "%CONFIRM%"=="y" (
        echo 操作已取消
        pause
        exit /b 0
    )
)
REM 执行清理
echo.
echo 正在清理Composer缓存...
REM 方法1: 使用composer自带的清理命令
call composer clear-cache
if %errorlevel% equ 0 (
    echo [成功] Composer缓存已清理完成
) else (
    echo [提示] 尝试手动清理缓存文件...
    if exist "%CACHE_DIR%" (
        del /f /s /q "%CACHE_DIR%\*.*" >nul 2>nul
        rmdir /s /q "%CACHE_DIR%" >nul 2>nul
        mkdir "%CACHE_DIR%" >nul 2>nul
        echo [成功] 缓存文件已手动清理
    ) else (
        echo [错误] 清理失败,请检查权限
        pause
        exit /b 1
    )
)
REM 显示清理后的结果
echo.
echo 清理后缓存大小: 
if exist "%CACHE_DIR%" (
    for /f "tokens=3" %%i in ('dir /s /a "%CACHE_DIR%" 2^>nul ^| findstr /i "文件"') do echo %%i
) else (
    echo 0B
)
echo ========================================
echo     清理完成!
echo ========================================
pause

使用说明

Linux/macOS

  1. 保存脚本

    # 将上面的脚本保存为 clean_composer_cache.sh
  2. 赋予执行权限

    chmod +x clean_composer_cache.sh
  3. 运行脚本

    # 交互模式(需要确认)
    ./clean_composer_cache.sh
    # 自动模式(无需确认)
    ./clean_composer_cache.sh -y

Windows

  1. 保存脚本

    • 将 Windows 版本保存为 clean_composer_cache.bat
  2. 运行脚本

    • 双击运行(需要手动确认)
    • 或在命令行执行(自动模式):
      clean_composer_cache.bat -y

定时自动清理(可选)

Linux (crontab)

# 每天凌晨2点自动清理
crontab -e
0 2 * * * /path/to/clean_composer_cache.sh -y >> /dev/null 2>&1

Windows (任务计划程序)

  1. 打开"任务计划程序"
  2. 创建基本任务
  3. 设置触发器(例如每天)
  4. 设置操作:启动程序
  5. 程序/脚本:C:\path\to\clean_composer_cache.bat
  6. 添加参数:-y

注意事项

  • 清理缓存后,下次运行 composer installcomposer update 时会重新下载包
  • 如果网络不佳,建议不要频繁清理
  • 脚本默认使用 composer clear-cache 命令,这是最安全的方式
  • 如果遇到权限问题,Linux/macOS 可能需要使用 sudo 运行

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