最彻底的方式是删除 vendor 目录后执行 composer install;必须确保 composer.lock 文件准确且受版本控制,Windows 用户需先关闭占用进程并使用 Remove-Item 命令清理。

直接删 vendor 目录 + 重装是最彻底的方式
Composer 没有类似 composer reinstall 的原生命令,所谓“强制重装所有依赖”,本质就是清掉旧状态、从头来过。最可靠的做法就是手动删除 vendor 目录,再运行安装命令。这能绕过缓存、锁文件校验、本地修改残留等所有干扰因素。
rm -rf vendor 后必须用 composer install,不是 composer update
这是最容易踩的坑:以为删完重 update 就行,结果可能装错版本或跳过某些包。
-
composer install严格按composer.lock安装,确保环境一致性 -
composer update会根据composer.json重新解析依赖树,升级到符合约束的最新版本,可能引入不兼容变更 - 如果你要的是“和上次部署一模一样的依赖”,必须用
install
删 vendor 前确认 composer.lock 是你想要的版本
composer.lock 是重装的唯一依据。如果它已过时、被误改、或没提交到 Git,install 会装出意料之外的结果。
- 检查
git status,确认composer.lock没有未提交的修改 - 如果 lock 文件丢失,先
composer update --lock生成一份(但注意这等价于一次 update) - CI/CD 流程中建议始终用
install,并确保lock文件在版本控制里
Windows 用户注意路径和权限问题
在 Windows 上直接删 vendor 可能失败,尤其当某些 PHP 进程(如 Swoole、Xdebug)或 IDE(如 PhpStorm)正占用子目录时。
- 关掉所有正在运行的 PHP 服务、调试器、IDE 的文件索引
- 用 PowerShell 执行:
Remove-Item -Recurse -Force vendor
- 或者进
vendor目录逐级删,避开被占用的子目录(如vendor/bin) - 删完后若
composer install报Permission denied,说明残留句柄还在,重启终端再试
vendor 看似简单,但实际成败取决于 lock 文件是否干净、环境是否释放、命令是否选对——这三个点漏掉任何一个,都会让“强制重装”变成“装了个寂寞”。










