真正强制重装某包需删其vendor子目录后执行composer install,或用composer remove+clear-cache+require组合;必须配合--no-cache与clear-cache双清缓存,否则仍复用旧ZIP。

想让 Composer 强制重新下载某个包,不是 composer update 就能解决的——它大概率啥也不下,只走缓存或跳过。真正生效的只有明确“删掉再装”或“强制跳过缓存下载”这两条路。
删 vendor 子目录 + composer install 是最稳的单包重装法
Composer 没有 reinstall 命令,但它的安装逻辑很实在:只要 vendor/vendor-name/package-name 目录不存在,且 composer.lock 里记录了这个包,composer install 就会原样拉取、解压、重建 autoload。
- Linux/macOS:
rm -rf vendor/guzzlehttp/guzzle - Windows(PowerShell):
Remove-Item -Recurse -Force vendor\guzzlehttp\guzzle - 确认
composer.lock没被改过(git status 看一眼),然后跑composer install - 如果只想重装生产依赖,加
--no-dev;想连间接依赖也一起刷新,加--with-all-dependencies
这方法不碰 composer.json、不改 composer.lock、不升级版本,只重走一遍安装流程。适合修复文件损坏、符号链接断裂、post-install-cmd 失效等场景。
composer remove + composer require 适合要清配置再装的情况
当你不确定该包是否还被其他依赖隐式引用,或者想确保 composer.json 和 composer.lock 完全同步时,用卸载+重装更干净。
- 先执行
composer remove guzzlehttp/guzzle(自动删目录、删require行、更新 lock) - 再执行
composer clear-cache(避免从缓存里解压旧 ZIP) - 最后
composer require guzzlehttp/guzzle(按当前约束重新解析并安装) - 若需固定版本,直接写
composer require guzzlehttp/guzzle:7.8.1
注意:composer update guzzlehttp/guzzle 默认不会重下——除非版本约束变了,或者缓存里那个 ZIP 的哈希和 lock 对不上。别指望它“强制”。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
--no-cache 必须和 clear-cache 配合,否则只是摆设
--no-cache 不是“清缓存”,而是告诉 Composer:“这次所有远程请求,一律不查本地缓存记录”。但它不保证你本地缓存里没存着一个完好的 ZIP——如果不清掉,它仍可能用那个 ZIP 解压。
- 必须先跑
composer clear-cache,看到输出Clearing cache (all) - 再立刻执行
composer install --no-cache(或composer require --no-cache vendor/package) - 验证是否真重下了:终端日志里得出现
Downloading https://api.github.com/,而不是Using cache或Writing lock file - CI 环境更保险:用
COMPOSER_CACHE_DIR=/dev/null composer install --no-cache
单独用 --no-cache 而不清缓存,或清了缓存却没加这个参数,都会导致你以为重装了,其实还是在用旧文件。
--force-reinstall 只覆盖文件,不绕过缓存
composer install --force-reinstall 会强制重解压 dist 包、重建 autoload、重跑 post-install-cmd,但它依然会从 ~/.composer/cache/downloads/ 里读 ZIP——如果那个 ZIP 已损坏或哈希不对,它照样失败。
- 适用场景:vendor 目录结构乱了、某些 .so 文件被误删、autoload.php 生成异常
- 不适用场景:怀疑缓存 ZIP 本身损坏、换源后行为没变、CI 构建产物不一致
- 若真要用它,建议搭配
--no-cache:即composer install --force-reinstall --no-cache - Windows 下容易因文件被占用失败,先关掉 PhpStorm 索引、Swoole 进程、Xdebug 服务
最容易被忽略的是:这个命令不改变 composer.lock,所以它重装的永远是 lock 里锁死的那个版本——如果你的 lock 本身已过时,重装也没用。

















