
composer update --with-dependencies 已被彻底移除,因语义模糊且与默认行为重叠;应改用 --with 或 --with-all-dependencies 精确控制范围,或直接使用 composer update 默认递归更新整棵树。
这个命令在 Composer 2.2+ 中已彻底废弃,执行会直接报错:Unrecognized option: --with-dependencies。它不是“暂时不推荐”,而是被明确删除——因为语义模糊、行为不可控,且和 composer update 默认行为重叠严重。
Composer 2.2 起引入了更清晰的依赖更新粒度控制:
--with vendor/package:只把指定包及其**直接依赖**(即 composer.json 里声明的依赖)纳入更新范围,不递归向下--with-all-dependencies:把指定包 + 它所有层级的依赖(包括子依赖的子依赖)全部加入更新候选集composer
update monolog/monolog --with-all-dependencies
注意:--with-all-dependencies 不等于“全量更新”,它仍只作用于你显式列出的包及其依赖树,不会动其他未提及的包。
看似方便,实则风险集中:
symfony/polyfill),导致某个间接依赖的运行时行为变化--with-all-dependencies 可能因版本约束冲突而失败,报错类似:Conclusion: don't install symfony/console v5.4.39
真正需要“连带更新依赖的依赖”时,优先考虑:composer update vendor/package --with-all-dependencies --dry-run 先看影响范围。
如果你本意是“让所有依赖都升到满足约束的最新版”,最简单也最可靠的方式就是:
composer.lock(谨慎!仅限本地验证)composer update —— 它默认已递归解析并更新整棵树,只要版本约束允许composer update --dev
所谓“依赖的依赖”,从来不在 Composer 的更新逻辑之外;它只是你没意识到,默认就已经在做了。