本文目录导读:

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
-
保存脚本
# 将上面的脚本保存为 clean_composer_cache.sh
-
赋予执行权限
chmod +x clean_composer_cache.sh
-
运行脚本
# 交互模式(需要确认) ./clean_composer_cache.sh # 自动模式(无需确认) ./clean_composer_cache.sh -y
Windows
-
保存脚本
- 将 Windows 版本保存为
clean_composer_cache.bat
- 将 Windows 版本保存为
-
运行脚本
- 双击运行(需要手动确认)
- 或在命令行执行(自动模式):
clean_composer_cache.bat -y
定时自动清理(可选)
Linux (crontab)
# 每天凌晨2点自动清理 crontab -e 0 2 * * * /path/to/clean_composer_cache.sh -y >> /dev/null 2>&1
Windows (任务计划程序)
- 打开"任务计划程序"
- 创建基本任务
- 设置触发器(例如每天)
- 设置操作:启动程序
- 程序/脚本:
C:\path\to\clean_composer_cache.bat - 添加参数:
-y
注意事项
- 清理缓存后,下次运行
composer install或composer update时会重新下载包 - 如果网络不佳,建议不要频繁清理
- 脚本默认使用
composer clear-cache命令,这是最安全的方式 - 如果遇到权限问题,Linux/macOS 可能需要使用
sudo运行