是,composer clear-cache 会删除 ~/.composer/cache/vcs/ 下的内容,但仅限该目录,不涉及其他路径;vcs/ 为纯缓存,整删安全,下次自动重建。

composer clear-cache 会删掉 vcs/ 吗?
会,但只删 ~/.composer/cache/vcs/ 下的内容,不碰其他目录。这个行为是默认的,不需要额外参数。不过要注意:vcs/ 缓存的是 Git(或 Mercurial/SVN)裸仓库,不是 ZIP 包,所以它不影响 dist 安装流程,只影响从源码拉取(--prefer-source)时的速度。
为什么删了 vcs/ 还是拉到旧 commit?
常见于本地 path 仓库或私有 Git 仓库更新后,composer update 仍解包旧代码。根本原因不是 vcs/ 没删干净,而是 Composer 在 vendor/ 下保留了 symlink 或已解压副本,且没强制重读源码树。此时仅清 vcs/ 不够:
-
rm -rf ~/.composer/cache/vcs/*(Linux/macOS)或rmdir /s /q "%APPDATA%\Composer\Cache\vcs"(Windows CMD) -
rm -rf vendor/vendor/package(只删对应包,别动整个 vendor) - 加
--no-cache --prefer-source重装:composer require vendor/package --no-cache --prefer-source - 验证是否生效:加
-vvv,日志里应出现Cloning into ...或Checking out ...,而不是Using version x.x.x from cache
vcs/ 能不能整删?会不会丢数据?
能,而且推荐整删。vcs/ 是纯缓存,删完不影响功能——下次需要时自动重建,耗时很短(通常几秒),比手动找某个坏仓库靠谱得多。但注意别误删 repo/ 目录,那是包索引快照,删了会导致首次 composer update 卡在 HTTP 请求上,等几十秒甚至超时。
PowerShell 下删 vcs/ 总失败?路径问题怎么解?
PowerShell 不自动展开 ~,也不支持 $(composer config --global cache-dir) 直接插进命令。正确写法是:
- 先查路径:
composer config --global cache-dir - 复制输出(如
C:\Users\Alice\AppData\Roaming\Composer\Cache) - 删 vcs:
rmdir /s /q "C:\Users\Alice\AppData\Roaming\Composer\Cache\vcs" - 或者用变量(更稳):
$cache = (composer config --global cache-dir).Trim(); Remove-Item -Recurse -Force "$cache\vcs"
vcs/ 本身不存业务逻辑或配置,但它是“隐性依赖”——你忘了它存在,就容易把问题归给网络、权限或 Git 配置。


















