默认只显示约20个核心命令,需加--all才能全景展示所有已激活插件命令及隐藏命令;插件命令未加载、全局安装或非composer注册的工具(如pest)均不会出现在默认列表中。

直接执行 composer list 就能看到当前环境所有可用命令,但默认只显示约 20 个核心命令;要真正“全景展示”,必须加 --all(或 -a)。
为什么 composer list 默认看不到插件命令
Composer 把插件注册的命令(比如 phpstan:analyse、pest:test)视为“可选扩展”,不激活就不加载。常见情况包括:
- 插件已通过
composer require安装,但项目还没运行过composer install或composer update—— 插件类没被 autoload 加载,命令不会注册 - 插件是全局安装的(如
composer global require laravel/installer),但composer list只查当前项目上下文,不会包含全局命令 - 某些工具(如 PHPUnit、Pest)根本不注册 Composer 命令,而是把二进制文件放在
vendor/bin/下,它们不属于list的范畴
怎么可靠地列出“全部”命令
用 --all 是最直接的方式,它强制显示所有已激活插件提供的命令,以及隐藏命令(如 self-update):
composer list --all
几个实用技巧:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 想快速过滤:用
composer list --all | grep -i "autoload"找dump-autoload - 命令名必须用短横线,
composer list dump_autoload会报错:Command "dump_autoload" is not defined - 终端支持分页时会自动启用,按
q退出,别误以为卡死 - 输出是纯字母序,不是按功能分组——
install和outdated可能隔十几行,这是设计使然
list 和 help 的分工必须分清
composer list 只回答“有哪些命令”,不解释参数;composer help <command></command> 才告诉你怎么用:
-
composer list require和composer help require输出几乎一样,但前者更紧凑,适合grep或脚本解析;后者带高亮和换行,更适合人眼阅读 -
composer help dump-autoload不会说明-o和--optimize是等价的,也不会提性能差异——这些得看文档或源码 - 某些选项行为依赖上下文,比如
create-project在已有composer.json的目录下可能禁用部分参数,help文本未必体现这点
容易被忽略的边界情况
很多问题其实出在“你以为的当前环境”和 Composer 实际感知的不一致:
- 在没有
composer.json的目录下执行composer list,它仍会运行,但插件可能无法加载,导致命令缺失 -
composer list不反映权限或缓存状态——即使命令列出来了,执行时仍可能因vendor/权限不足或 CA 证书失效而失败 - 别用
composer list | grep "dev"找require-dev——它根本不是命令,只是require的一个选项 - 自定义脚本(
"scripts": {"ci-test": "phpunit"})不会出现在list中,得用composer run-script ci-test显式调用
真正可靠的命令列表,永远取决于当前目录是否完成过 composer install、插件是否被正确加载、以及你是否用了 --all。漏掉这三点中的任一环,看到的就只是碎片。










