composer list 仅显示当前项目中已激活的内置命令及插件注册的命令,不包含全局命令、未启用插件的命令或 vendor/bin 下的独立二进制工具;需先执行 composer install/update 激活插件,且自定义脚本须通过 composer run-script 调用。

composer list 能看到什么命令
它只列出当前项目中可用的 composer 命令,不包含全局安装的插件命令(除非插件已启用且被识别),也不显示子命令的参数说明。运行 composer list 时,如果项目里有自定义脚本或第三方插件(比如 laravel/installer 或 phpstan/extension-installer),它们注册的命令可能不会立刻出现——得先确保插件已通过 composer install 或 composer update 激活。
常见错误现象:composer list 输出里找不到你刚装的包提供的命令,比如 phpunit 或 pest 的快捷命令。这不是 Composer 漏了,而是这些工具通常不注册为 Composer 命令,而是独立二进制文件(放在 vendor/bin/ 下)。
使用场景:快速确认有没有拼错命令名,或者验证某个插件是否生效。比如装完 hirak/prestissimo(旧版并行下载插件)后,composer list 里仍不会多出新命令——它只是改行为,不加命令。
composer help 查看具体命令用法
composer help 必须跟一个命令名才有意义,单独敲 composer help 只会打印最简帮助页,连常用选项都省略了。真正有用的是 composer help require、composer help update 这类带目标命令的写法。
参数差异要注意:composer help install 和 composer help update 显示的选项看似差不多,但实际行为不同。比如 --no-scripts 在 install 中跳过 post-install-cmd,在 update 中则跳过 post-update-cmd;而 --with-dependencies 只在 require 里有效,help require 才会提到它。
容易踩的坑:
- 误以为
composer help dump-autoload会告诉你怎么生成 PSR-4 自动加载——其实它只说参数,不解释-o和--optimize的区别(前者是短选项,后者是长选项,功能完全一样) - 在没有
composer.json的目录下运行composer help,会报错Could not find a composer.json file,但它其实不影响查看命令帮助——加--no-plugins或切到有配置的目录再试
查不到命令?可能是作用域或版本问题
Composer 命令分三类:内置命令(如 install、dump-autoload)、插件注册的命令(如 phpstan analyse 如果插件支持)、以及 scripts 里定义的自定义脚本(需用 composer run-script xxx 触发)。前两者才能被 list 和 help 直接识别。
性能与兼容性影响:低版本 Composer(如 1.x)的 help 输出更简略,不显示默认值和别名;2.x 开始才补全了 --no-cache 这类选项的说明。如果你在 CI 环境里看到帮助信息不一致,先检查 composer --version。
实操建议:
- 想确认某命令是否存在:用
composer list | grep -i "xxx"(Linux/macOS)或composer list | findstr xxx(Windows) - 不确定参数含义时,别只看
help,直接试:composer require --dry-run monolog/monolog看它打算改什么,比读文档更快 - 插件命令查不到?先运行
composer show --plugins,确认插件已加载,再看它文档里写的命令格式(有些要加 vendor 前缀,比如yoast/phpunit-polyfills:phpunit-polyfills)
help 输出太长,怎么快速定位关键参数
composer help 默认输出含描述、选项、示例,但关键参数往往藏在中间。与其滚动翻页,不如用管道过滤:composer help update | grep -A5 -B2 "no-dev" 就能精准看到 --no-dev 的说明和前后上下文。
容易被忽略的地方:
-
--verbose(-v)、--very-verbose(-vv)、--debug(-vvv)这三个日志级别在所有命令的help里都列在最后,但实际调试时它们比大多数选项更有用 -
--working-dir参数允许你在任意路径执行命令并指定项目根目录,但它在help里常被折叠进“Global Options”,新手容易漏看 - 某些选项只在特定上下文生效,比如
--prefer-dist对create-project有效,对require却无效——help不会主动提醒这点,得靠文档或实验
事情说清了就结束










