必须同时删除 vendor 和 composer.lock 才能真正从头安装;仅删其一会导致还原旧版本、安装失败或升级而非重装;还需清缓存、重生成 autoload 并检查 platform 配置。

删 vendor 和 composer.lock 是硬性前提,不是可选操作
想让 Composer 真正从头开始安装,必须同时清除 vendor/ 和 composer.lock。只删 vendor/,composer install 会照着旧 lock 文件还原——它不关心你删没删,只认锁;只删 composer.lock 而留着 vendor/,composer install 会失败(因无锁可依),而 composer update 则会重新解析依赖树,大概率装出和原来不一样的版本。
常见错误现象:
-
Your lock file does not contain a compatible set of packages—— 说明 lock 文件已损坏或环境不匹配,但你没删它就直接 install - 类存在但方法报错、
Class not found却显示包已安装 —— vendor 里残留了旧文件,或 autoloader 没刷新
Linux/macOS 执行:rm -rf vendor composer.lock
Windows PowerShell 执行:Remove-Item -Recurse -Force vendor, composer.lock
必须用 composer install,不是 composer update
composer install 在没有 composer.lock 时,会基于当前 composer.json 生成一份新 lock,并下载所有包;composer update 则是丢弃 lock、重算整个依赖图,哪怕只改一行 composer.json,也可能把 "monolog/monolog": "^2.0" 升到 2.10.0 而非原来的 2.8.0,这不是重装,是升级。
使用场景判断:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 你想“和线上/同事一模一样” → 用
composer install - 你刚
git pull了别人提交的新composer.lock→ 直接composer install(不用删任何东西) - 你怀疑
composer.lock本身被破坏(Git 合并冲突残留、手动编辑出错)→ 先git checkout HEAD -- composer.lock,再删vendor/,再composer install
--no-cache 和 clear-cache 缺一不可
即使 vendor/ 和 composer.lock 都清了,Composer 默认仍会从本地缓存(~/.composer/cache/ 或 %APPDATA%\Composer\Cache\)解压 ZIP 包——根本不会发网络请求。所以必须组合使用:
-
composer clear-cache:清空全局缓存目录里的 ZIP 和 dist 包 -
composer install --no-cache:本次安装完全跳过缓存校验,强制走远程下载
验证是否生效:加 -v 参数运行,看到大量 Downloading https://api.github.com/... 才算成功;若出现 Using cache,说明某步漏了。
CI/CD 中更稳妥写法:COMPOSER_CACHE_DIR=$(mktemp -d) composer install --no-cache
容易被忽略的副作用:autoload、bin、platform
重装后不是“完事大吉”,几个关键点常被跳过:
-
composer dump-autoload -o必须重跑:否则vendor/composer/autoload_*.php还是旧的映射,类加载会出错 -
vendor/bin/下的脚本(如phpunit、laravel)路径可能变化,IDE 外部工具配置、Shell 的$PATH缓存需手动刷新 - 如果
composer.json里有"platform"配置(如"php": "8.2.10"),composer install会严格检查并报错;composer update可能静默降级,掩盖问题 - Windows 用户删
vendor/失败?关掉 PHP 服务、Xdebug、IDE 文件索引,再试;残留句柄导致Permission denied时,重启终端再执行
真正干净的重装,从来不只是删目录那么简单——lock 文件是契约,缓存是影子,autoload 是入口,三者都得对齐,少一个环节,就可能“装了,但没完全装”。










