composer update 更新所有依赖并重写 composer.lock;composer update vendor/package 仅更新指定包及其直接子依赖,lock 文件仅修改相关行。

composer update 会更新 所有 在 composer.json 中声明的依赖,按版本约束拉取每个包的最新兼容版本,并重写 composer.lock。
composer update vendor/package 只更新 指定的一个包(比如 monolog/monolog 或 laravel/framework),且仅限于它在 composer.json 中已定义的版本范围内,其他依赖完全不动。
更新范围对比很直观
-
不带参数的 update
-
带包名的 update
- 只聚焦目标包及其直接子依赖(除非加了
--with-dependencies) - 不会影响其他未提及的包,哪怕它们也有新版本
- composer.lock 仅更新该包及关联依赖的版本行,其余保持原样
- 只聚焦目标包及其直接子依赖(除非加了
实际操作建议
- 团队协作或生产项目中,避免无参数运行
composer update - 修复安全漏洞或引入某功能时,优先用
composer update vendor/package - 想升级某个包到特定小版本系列,可加版本限定:
composer update topthink/think-queue:^3.0 - 升级后务必跑测试,尤其关注该包的 API 变更是否影响业务逻辑
基本上就这些。精准控制比全量更新更安全,也更容易定位问题。