composer install 不重下载是因为默认复用 composer.lock 和本地缓存;需三步强制刷新:清缓存(composer clear-cache)、删 vendor、加 --no-cache 重装。
composer
install 为什么总不重新下载?
因为
默认完全信任
和本地缓存——只要 vendor 目录存在、lock 文件没变,它就直接解压缓存里的 ZIP,连网络都不碰。哪怕你刚手动删了某个包的文件,它也只补那个目录,不会重拉整个包。
缓存路径在
(Linux/macOS)或
(Windows)
缓存里存的是完整 ZIP 包和元数据,不是“临时文件”,不清掉就会一直被复用
只删
或只跑
都不够:前者仍走缓存,后者不删已安装的旧文件
真正强制刷新的三步组合拳
想让每个包都从远程重新下载、解压、安装,必须同时切断缓存路径 + 清除已安装痕迹 + 强制跳过缓存查找逻辑。
先清全局缓存:
再删已安装依赖:
(Linux/macOS)或
(Windows)
最后带参数重装:
(Composer 2.2+ 推荐)
若版本太老不支持
,改用
注意:
不是“清缓存”,而是“这次完全不用缓存”;它和
是互补关系,不是替代关系。
想重装单个包?别用 update,用 remove + require
看似合理,但它只更新到符合
版本约束的最新版,不保证重下载——尤其当 lock 文件里锁死的是旧版,它可能啥也不干。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
最稳妥方式:
→
如果怕升级,加
:
,它会严格按 lock 文件重装,不改版本
Composer 2.2+ 支持
,但本质仍是 remove + require,无需额外记忆
--refresh 和 --force-reinstall 到底能信吗?
(2.5+)只刷新元数据,比如重新抓取 packagist 的
,但 ZIP 还是从缓存读——它解决的是“找不到新版本”,不是“包文件损坏”。
(2.2+)等价于“自动删 vendor 再 install”,但依然走缓存;要彻底重下,必须配
CI/CD 中推荐写成:
,避免缓存污染,且
明确走 ZIP 而非 Git 克隆,更快更确定
最容易被忽略的一点:很多人清了缓存却忘了删 vendor,或者删了 vendor 却没加
,结果还是在用旧缓存解压——三步缺一不可,少一步就不算“强制刷新”。
composer installcomposer.lock~/.composer/cacheC:\Users\用户名\AppData\Roaming\Composer\Cachevendor/composer clear-cachecomposer clear-cacherm -rf vendorrmdir /s vendorcomposer install --no-cache--no-cacheCOMPOSER_CACHE_DIR=/dev/null composer install--no-cacheclear-cachecomposer update vendor/package-namecomposer.jsoncomposer remove vendor/package-namecomposer require vendor/package-name--with-dependenciescomposer update vendor/package-name --with-dependenciescomposer reinstall vendor/package-namecomposer update --refreshpackages.jsoncomposer install --force-reinstall--no-cacheCOMPOSER_CACHE_DIR=/dev/null composer install --no-cache --prefer-dist--prefer-dist--no-cache