强制重装必须三步齐备:删 vendor、删 composer.lock、执行 composer install --no-cache;仅删 vendor 或仅清缓存均无效,因 install 默认复用 lock 文件与本地缓存,不触网络。

删 vendor + 删 composer.lock + composer install --no-cache,三者缺一不可。只做其中一两步,90% 的情况都只是“假装重装”。
为什么 composer install 总是不重新下载包?
因为 composer install 默认完全信任 composer.lock 和本地缓存——它根本不会去查网络,而是直接从 ~/.composer/cache/ 解压旧 zip 包,再照着 lock 文件里的哈希值校验还原。
- 删了
vendor/但没删composer.lock→ 它就按锁文件“复原”,不是重装 - 跑了
composer clear-cache但没加--no-cache→ 下次 install 仍会立刻重建缓存并复用旧记录 - 改了
composer.json的版本号却没动 lock →install完全无视改动,只认 lock
真正生效的强制重装命令组合
顺序不能错,每步都有明确作用:
- 删掉已安装产物:
rm -rf vendor(Windows 用rmdir /s vendor) - 清掉决策依据:
rm composer.lock(Windows 用del composer.lock) - 切断缓存路径:
composer clear-cache(确认输出含Clearing cache (all)) - 强制无缓存安装:
composer install --no-cache(必须紧跟在clear-cache后执行)
注意:--no-cache 不是“清缓存”,而是告诉 Composer “这次别查缓存目录,老老实实发 HTTP 请求”;它和 clear-cache 是互补关系,不是替代关系。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
镜像源同步延迟导致拉不到新版本?用 --refresh
现象是:packagist.org 上已有 monolog/monolog v3.6.0,但 composer update monolog/monolog 显示 Nothing to install or update —— 这不是网络问题,是 Composer 复用了本地缓存的 packages.json(默认 15 分钟不过期)。
- Composer ≥ 2.5:直接跑
composer update --refresh,它会强制丢弃所有 repo 缓存,重新下载元数据 - Composer rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-composer
- 验证是否生效:执行后立刻再跑
composer update monolog/monolog -v,看日志里有没有Downloading https://mirrors.aliyun.com/composer/p/monolog/monolog/
CI/CD 中最保险的写法
CI 环境里,runner 常挂载持久化缓存目录,光靠 --no-cache 不够。得双重拦截:
- 彻底绕过缓存路径:
COMPOSER_CACHE_DIR=/dev/null composer install --no-cache - 或用临时缓存目录:
COMPOSER_CACHE_DIR=$(mktemp -d) composer install --no-cache - 务必加
--no-interaction --optimize-autoloader,避免交互中断或 autoloader 未优化影响后续测试
真正麻烦的从来不是命令记不住,而是 composer.lock 被 Git 忽略、被 IDE 自动恢复、或团队混用 install 和 update 导致锁文件悄然漂移——这些地方一松懈,问题就藏得特别深。

















