Composer 没有 suggests 命令,suggests 仅是 composer.json 中的文档字段,不触发安装;所有相关插件均已失效或误读其用途,真实场景中必须手动解析并谨慎执行 composer require。

Composer 本身没有 suggests 命令,也不存在“自动发现并安装推荐依赖”的原生能力。 所有声称能实现该功能的插件,要么已失效,要么是误读 composer.json 中的 suggests 字段(仅作提示用,不触发安装)。
为什么 composer suggests 不是真实命令
运行 composer suggests 会直接报错:Command "suggests" is not defined. Composer 官方命令列表中从未定义过该命令。它只在 composer.json 的 suggests 字段里作为可选说明存在,例如:
"suggests": {
"phpunit/phpunit": "For running tests",
"monolog/monolog": "For logging"
}
这个字段纯属文档性质,Composer 安装或更新时完全忽略它,不会提示、不会校验、更不会帮你 require。
哪些插件曾试图增强 suggests 行为?现状如何
-
hirak/prestissimo:只加速下载,和suggests无关;Composer 2.1+ 已原生支持并行,该插件必须卸载,否则报Plugin is not compatible with Composer 2 -
fxp/composer-asset-plugin:用于管理前端资产(npm/Bower),不解析suggests,且自 Composer 2 起已彻底废弃 -
vaimo/composer-plugin:只格式化composer.json,对suggests字段不做任何增强 - 所有标榜“自动安装 suggests 包”的第三方脚本或私有插件:无一通过 Composer 2.x 插件认证三条件(
type: composer-plugin+extra.class+require composer-plugin-api),实测均静默失败或破坏composer.lock
真想基于 suggests 安装依赖,只能手动做
没有安全、稳定、可复用的插件能绕过 Composer 的设计哲学——suggests 就是给人看的,不是给机器执行的。如果你确实需要批量安装建议包:
- 先提取字段:
jq -r '.suggests | keys[]' composer.json(需安装jq) - 人工筛选可信项,避免引入 dev-only 或安全风险包
- 逐个执行:
composer require vendor/package --with-all-dependencies - 注意:某些
suggests包可能与现有约束冲突(如 PHP 版本、其他依赖),必须检查composer why-not输出
真正容易被忽略的是:很多团队把 suggests 当成“待办清单”塞进模板项目,结果新成员照着 composer install 后的提示盲目安装,反而引入未审计的依赖。它从来就不是自动化入口,也不该是。











