composer list 显示当前环境真实可用的全部命令,是 composer 自带的实时索引;它仅包含已激活插件、版本兼容且未被缓存屏蔽的命令,不显示未安装插件的命令、全局插件(除非本地也安装)、scripts 或 vendor/bin 工具。

直接运行 composer list 就能拿到当前环境真实可用的全部命令,不需要查“大全”或“字典”——它就是 Composer 自带的实时索引。
为什么 composer list 显示的命令和文档不一致
不是文档错了,是你本地环境和文档假设的环境不匹配:
- 没装插件?
phpstan analyse、composer normalize这类命令根本不会出现在输出里 - 用的是全局 Composer 还是项目内
vendor/bin/composer?两者加载的插件路径不同 - Composer v1 和 v2 命令集差异明显:
composer global在 v2 中已废弃,outdated --direct是 v2.2+ 才支持 - CI 环境用的是精简镜像(如
composer:2-alpine),默认不带任何插件
composer list -a 和 composer list 的实际差别
-a 不是“显示更多命令”,而是显示所有注册了别名(alias)的命令:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
create-project和它的别名create会同时出现 - 某些插件注册的内部命令(如调试用的
diagnose-autoload)也可能只在-a下可见 - 但不会凭空多出功能命令——没装
roave/security-advisories,composer audit就不会出现,加-a也没用
怎么快速查某个命令支持哪些参数
别翻网页文档,用 Composer 自己的机制:
-
composer help require比composer require --help更可靠,尤其对插件命令 -
composer list require输出更紧凑,适合grep -- --dev这类过滤 - 加
-v(如composer help -v dump-autoload)能看到隐式参数,比如--optimize和--classmap-authoritative的实际触发条件 - 注意:帮助里写的“默认值”可能被
config或平台约束覆盖,比如"config": {"platform": {"php": "8.1"}}会让--ignore-platform-reqs的行为变复杂
脚本里解析 composer list 输出要小心什么
如果写 CI 脚本或自动化工具,依赖 composer list 判断命令是否存在,得避开几个坑:
- 用
--format=json,别靠字符串匹配——命令名可能含空格或特殊字符,且不同版本字段名可能微调 - 不要假设所有命令都支持
--help;有些插件命令只响应help子命令,直接xxx --help会报错 -
composer list不校验执行权限,它只反映注册表。比如composer global require在 v2 中已失效,但list仍可能显示(取决于是否缓存旧命令注册) - 想确认某命令“真能跑”,最稳的方式是
composer help <command> > /dev/null 2>&1</command>,看退出码










