使用 --no-update 参数可仅从 composer.json 中移除包而不立即更新,保留 lock 文件和 vendor 文件,适用于批量修改依赖或分阶段控制变更,后续需运行 composer update --lock 或 install 完成同步。

当你在使用 Composer 执行 composer remove vendor/package --no-update 时,Composer 只会从 composer.json 文件中移除对应的包,而不会立即执行更新操作,也不会修改 composer.lock 文件或删除 vendor 目录中的文件。
作用说明:--no-update 参数
该参数的作用是“仅修改 composer.json”,延迟所有实际的安装、卸载和锁文件更新操作。具体表现如下:
- 目标包会从
require或require-dev中移除 -
composer.lock保持不变 -
vendor/目录中的文件不会被删除 - 不会重新解析依赖关系
典型使用场景
这种操作适用于你希望批量修改依赖配置,稍后再统一处理安装逻辑的情况。例如:
- 同时移除多个包,避免每次执行都触发耗时的依赖解析
- 在 CI/CD 脚本中分阶段控制依赖变更
- 与其他 json 修改合并成一次 lock 更新,保证变更原子性
后续需要手动更新
执行完 --no-update 操作后,必须手动运行以下命令才能同步变更:
这会重新解析依赖并更新 composer.lock,同时清理已移除的包。如果想同时更新 vendor 目录:
基本上就这些。使用 --no-update 能让你更灵活地管理依赖变更,但记得最终要补上更新操作,否则锁文件和实际环境会不一致。










