正确写法是 composer update vendor/package-name,必须包含 vendor 名;它仅更新该包及其满足版本约束的子依赖,其他包保持原版本不动。

直接运行 composer update 会更新所有包,不是你想要的
默认执行 composer update 时,Composer 会根据 composer.json 中的版本约束,重新解析整个依赖图,并升级所有可升级的包(包括间接依赖)。这容易引发意外兼容性问题,尤其在线上环境或 CI 流程中。
要只更新某一个扩展包,必须显式指定它的包名(vendor/name 格式),不能只写类名、别名或文件夹名。
用 composer update vendor/package-name 精确更新单个包
这是最常用也最安全的方式。Composer 会仅对该包及其满足新版本要求的直接子依赖做最小范围升级,其他包保持不动。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 例如更新
monolog/monolog:运行composer update monolog/monolog - 可以一次更新多个指定包:
composer update monolog/monolog phpunit/phpunit - 如果包名拼错,Composer 会报错
Package "xxx" is not required in your composer.json,不会静默忽略 - 该命令仍会触发
autoload-dump和脚本执行(如post-update-cmd),这点和全量更新一致
更新时保留子依赖版本,加 --with-dependencies 要谨慎
默认情况下,composer update vendor/package 不会升级该包的子依赖——除非那些子依赖本身也在 composer.json 中被直接声明。但如果你加了 --with-dependencies,Composer 就会把该包所依赖的、且未被其他包锁定的包也一并升级。
- 多数场景下不需要加这个参数;加了反而可能带入不兼容的间接依赖
- 比如
laravel/framework依赖symfony/http-foundation,加--with-dependencies可能升级到 Symfony 6.x,而你的其他代码还没适配 - 想确认影响范围?先加
-n(dry-run):composer update laravel/framework --with-dependencies -n
遇到“nothing to install or update”却明明有新版?检查版本约束和稳定性
即使远程包已发布 v3.2.0,执行 composer update vendor/package 后仍显示无更新,常见原因有:
-
composer.json中该包的版本约束太紧,例如写死为"^3.1.0",而 v3.2.0 不在范围内 - 新版本标记为
dev或beta,但你的minimum-stability是stable,且没配prefer-stable: true - 本地
composer.lock锁定了旧版本,且 Composer 认为当前锁版本仍满足约束(此时需先删 lock 文件或改约束再试) - 运行
composer show vendor/package查看当前安装版本和可用版本列表,比猜更可靠
真正要强制升级到某个具体版本,最直白的做法是先改 composer.json 里的版本号,再跑 composer update vendor/package —— 这比用 require --update-with-dependencies 更可控。










