composer list仅列出已激活的composer命令,不涉及包信息;查包应使用composer show(含--direct、--tree等参数)或composer outdated,二者直接读取installed.json和composer.lock,结果可靠。

composer list 不过滤包,它只列命令——想筛包请用 composer show 或 composer outdated,别在 list 上浪费时间。
为什么 composer list 根本不处理“包”
composer list 输出的是 Composer 自身可执行的命令集合(如 install、dump-autoload),不是依赖包列表。它不读 vendor/、不解析 composer.lock、也不关心你 require 了什么。常见误操作:
- 运行
composer list | grep monolog→ 一定为空,因为monolog/monolog不是命令名 - 以为
composer list require能列出所有与依赖相关的命令 → 实际只匹配命令名前缀,返回require和require-dev(后者根本不存在,只是require命令的选项) - 在 CI 脚本里用
list判断插件是否可用 → 错,应直接跑composer phpstan:analyse --help验证
真要快速筛包,该用哪些命令和参数
查已安装包,优先用 composer show,配合精准参数:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer show --direct:只看composer.json里明文写的包(不含传递依赖) -
composer show --tree | grep -A2 "guzzlehttp/guzzle":带上下两行上下文,看清谁引入了它 -
composer show --name-only | grep "^symfony/":纯包名列表 + 前缀过滤,适合脚本消费 -
composer outdated --direct:只检查你手动 require 的包是否有更新,排除传递依赖干扰
list 里能“假装筛包”的唯一合法方式
极少数情况下,你想确认某个插件命令是否注册成功(比如 phpstan:analyse),可以用 list 配合命名空间前缀:
-
composer list phpstan:若插件已激活,会显示phpstan:analyse等全部phpstan:开头的命令 -
composer list config:列出所有含config字样的命令(config、diagnose),但这是巧合,不是分类机制 - 注意:
composer list symfony不会显示symfony/console相关命令——因为没有命令叫symfony:xxx,插件未注册该命名空间
真正容易被忽略的是:list 的输出受缓存、插件激活状态、当前目录是否为项目根、甚至终端宽度影响;而 show 和 outdated 直接读 vendor/composer/installed.json 和 composer.lock,结果更确定。别用错命令入口。










