composer clear-cache 仅清理 ~/.composer/cache/ 下的 files/、repo/、vcs/ 等子目录,以及 ~/.composer/artifacts/ 和 ~/.composer/repo/,但不删除项目内的 vendor/、composer.lock 或 vendor/composer/autoload_*.php。

composer clear-cache 会删掉哪些文件
composer clear-cache 并不只清空 ~/.composer/cache/ 下的 ZIP 和 JSON 缓存,它还会顺手清理 ~/.composer/artifacts/(用于 install --prefer-dist 的预构建包)和 ~/.composer/repo/(旧版仓库元数据缓存)。但注意:它**不会碰**项目目录下的 vendor/、composer.lock 或 vendor/composer/ 里的 autoload 文件 —— 这些得手动处理或用其他命令。
批量删除 vendor 和 composer.lock 的安全做法
直接 rm -rf vendor composer.lock 看似快,但容易在多项目共用同一 Composer 配置或使用 COMPOSER_HOME 自定义路径时误删。推荐用 Composer 自身命令兜底:
- 先运行
composer install --dry-run确认依赖解析无报错,再执行清理 - 用
composer dump-autoload --optimize替代暴力删vendor/composer/autoload_*.php,避免后续require失败 - 如果真要批量清项目目录,建议写成带路径检查的脚本:
for dir in ./project-a ./project-b; do [ -f "$dir/composer.json" ] && (cd "$dir" && rm -rf vendor composer.lock) done
临时文件残留常出现在 vendor/composer/.htaccess 和 .gitignore
某些旧版 Composer(vendor/composer/ 下生成 .htaccess 或 .gitignore,这些不是缓存,但属于“非必要临时产物”。它们不影响运行,但 CI 构建时可能触发 Git 警告或 Web 服务器配置冲突。清理方式很简单:
- 全局禁用:在
~/.composer/config.json中加"discard-changes": true,防止 Composer 自动写入这些文件 - 批量删:用
find vendor/ -name ".htaccess" -o -name ".gitignore" -path "*/composer/*" -delete - 注意:别用
find vendor/ -name ".*"全删,会误杀.phpstorm.meta.php等 IDE 支持文件
Windows 下 PowerShell 脚本需绕过 Composer 进程锁
在 Windows 上用 PowerShell 批量清理时,composer clear-cache 可能因后台 Composer 进程占用缓存目录而失败,报错类似 Failed to remove directory ... Permission denied。这不是权限问题,而是 Composer 自己的 Filesystem::removeDirectory 在 Windows 上对正在被扫描的目录加了锁。
- 必须先确保没有
composer.phar进程在运行(任务管理器查php.exe) - 改用
Remove-Item -Recurse -Force绕过 PHP 层锁:Get-ChildItem "$env:COMPOSER_HOME\cache" | ForEach-Object { Remove-Item $_.FullName -Recurse -Force } - 不要用
composer self-update后立刻清缓存 —— 新版二进制刚下载完,旧进程可能还在读取原缓存索引
composer update 后到底哪些文件是临时产物、哪些是项目必需的运行时支撑。尤其当 vendor/ 里混着 bin/ 软链接或自定义安装脚本时,删错一个就卡住整个部署流程。


















