强制重装必须三步齐备:删 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 是互补关系,不是替代关系。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
镜像源同步延迟导致拉不到新版本?用 --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 导致锁文件悄然漂移——这些地方一松懈,问题就藏得特别深。










