--dev 参数使 Composer 仅加载并处理 require-dev 区块中的包,跳过 require 条目,不更新、删除或降级生产依赖。

直接运行 composer update --dev 即可只更新 require-dev 中的包,不会触碰 require(生产依赖)。
为什么 --dev 能做到“只动开发依赖”?
Composer 默认只安装/更新 require 下的包(即生产环境必需的)。加上 --dev 参数后,它会切换行为:仅加载并处理 require-dev 区块中的包,同时跳过所有 require 条目。注意:这不会删除或降级已安装的生产依赖,只是不更新它们。
实际操作建议
- 运行前确保
composer.json中的require-dev定义清晰,没有意外混入生产用包 - 如果只想更新某几个开发包(比如只升
phpunit和mockery),用:composer update phpunit mockery --dev - 配合
--with-all-dependencies可递归更新开发包的子依赖(但依然不碰require) - 更新完成后,检查
composer.lock—— 里面只有require-dev相关条目应有变动
常见误区提醒
不要用 composer install --dev 来“更新”:它只是按 lock 文件重装所有依赖(含 require),和更新无关。
也不要误以为 composer update 加上 --no-dev 是反向操作——它其实是排除开发依赖,只更新生产依赖,和你的需求正好相反。
基本上就这些。命令简单,关键是理解 --dev 的作用范围,避免和安装、禁用开发依赖等场景混淆。










