composer install --force-reinstall 可强制重装所有依赖而不删除 vendor 目录,严格按 composer.lock 安装,支持 --no-dev 和 --with-all-dependencies 等选项控制范围,需确保 lock 文件最新。

直接运行 composer install 并不会重新安装已存在的 vendor 包,即使 composer.lock 有更新。要强制重装全部依赖而不删 vendor,核心是让 Composer 忽略现有安装、从 lock 文件“干净”重建。
用 composer install --force-reinstall
这是最直接有效的方式。该选项会强制重新下载并安装 composer.lock 中声明的所有包(包括已存在于 vendor 中的),跳过“已安装则跳过”的默认逻辑。
- 它不删除 vendor 目录,但会覆盖/替换已有文件
- 保留
composer.lock不变,确保安装结果可复现 - 比
rm -rf vendor && composer install更快(避免重复解压和脚本执行)
搭配 --no-dev 或 --with-all-dependencies 按需控制范围
如果只想重装生产依赖,加 --no-dev;如果某些包被其他依赖间接引用,而你想确保它们也被强制重装,可加上 --with-all-dependencies(尤其适用于 dev 依赖较多的项目)。
composer install --force-reinstall --no-devcomposer install --force-reinstall --with-all-dependencies
注意:确保 lock 文件是最新的
--force-reinstall 严格按 composer.lock 安装。如果 lock 文件滞后于 composer.json,先运行 composer update --lock 更新 lock 文件(不改 vendor),再执行强制重装。
- 检查是否需要更新 lock:
composer validate或对比composer.json修改 - 只更新 lock 文件(不碰 vendor):
composer update --lock
基本上就这些。不用删 vendor,--force-reinstall 就是专为这种场景设计的,安全、高效、语义清晰。










