composer clear-cache能一键安全清理全局缓存,但仅清除files/、repo/、installers/子目录,跳过占空间最大的vcs/目录;需先用composer config --global cache-dir确认真实路径并检查占用,超1.5 gb且半年未用才值得清理。

composer clear-cache 能快速清掉本地缓存,但它只动 ~/.composer/cache(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows)下的 files/、repo/、installers/ 子目录,不碰 vendor/、composer.lock 或项目文件——这是最安全、最常用的一键方式。
确认真实缓存路径和占用大小再动手
很多人执行后发现磁盘空间没变,根本原因是删错了位置。Composer 实际用的缓存路径可能被 COMPOSER_CACHE_DIR 环境变量或公司镜像覆盖,~/.composer/cache 或 %APPDATA%\Composer\Cache 不一定是真实路径。
- 查真实路径:
composer config --global cache-dir - Linux/macOS 查大小:
du -sh $(composer config --global cache-dir) - Windows 查大小:把输出路径粘贴进资源管理器地址栏 → 右键“属性”
- 不到 200 MB 基本不用管;超 1.5 GB 且半年没碰老项目,才值得清理
为什么 composer clear-cache 清完空间没变化?
常见原因不是命令失效,而是它默认跳过真正吃空间的部分:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 你真正想删的是
vendor/目录——中等 Laravel 项目常占 300–800 MB,而缓存可能只有 42 MB -
vcs/目录默认被跳过,但单个 Git 裸仓库就吃掉 300–800 MB,还耗尽 inode;必须手动删:rm -rf ~/.composer/cache/vcs/*(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\vcs"(Windows) - 临时目录
sys_get_temp_dir()下堆积了大量composer_*.zip、php*.phar文件,clear-cache完全不碰这里
CI/CD 或无交互终端里卡住怎么办?
在 GitHub Actions、GitLab CI 等环境里,composer clear-cache 默认会等待交互确认,直接 hang 住。
- 必须加
--no-interaction:避免卡在提示 - 建议先加
--dry-run预检:composer clear-cache --no-interaction --dry-run,确认输出路径是否指向预期位置(比如 NFS 挂载点而非本地磁盘) - 如果仍卡住,说明有后台进程锁着缓存目录:
lsof +D $(composer config --global cache-dir)(Linux/macOS),或handle.exe -p php.exe(Windows,需 Sysinternals 工具)
手动删比 clear-cache 更“精准”,但也更危险
官方命令会跳过正在被占用的文件,而手动 rm -rf 不会判断——删到一半被写入,后续可能报 Corrupted cache file。
- 只删下载过的原始包(节省最多空间):
rm -rf ~/.composer/cache/files/* - 只清元数据(解决“装不到新版包”类问题):
rm -rf ~/.composer/cache/repo/* - 只清 Git 克隆缓存(影响 vcs 类仓库拉取):
rm -rf ~/.composer/cache/vcs/* - 手删前务必确认没有
composer install或update进程在后台跑
vcs/ 目录是最大隐患,它默认不被 clear-cache 触及,却最占空间、最容易锁死、最难排查——多数人清完还满,问题就在这儿。










