composer run-script --list 仅列出 composer.json 中 scripts 字段显式定义的脚本名(键),要求该字段存在且为合法 JSON 对象(如 "scripts": {} 或含键值对),缺失、拼写错误(如 script)、非顶层或语法错误均导致静默无输出;输出为两列纯文本,左为脚本名、右为命令,不显示描述、不展开数组、不包含未绑定的内置事件。
直接运行就能列出当前项目定义的所有自定义脚本,但前提是里必须有合法的字段——缺了它,命令就静默退出,不是没脚本,是压根没识别到配置。
为什么
没输出?
最常见原因是
中缺失
键,或拼写错误(比如写成
或
多了个空格)。Composer 只扫描顶层
对象,其他字段如
完全不参与识别。
必须是 JSON 对象,哪怕空对象
也能触发列表输出
字段名大小写敏感:
或
都无效
在项目根目录外执行该命令,可能因找不到
而无响应
某些 IDE 或编辑器保存时自动删掉末尾逗号或加 BOM,导致 JSON 解析失败,
可暴露这类警告
输出内容怎么看?
正常输出是两列纯文本:左侧是脚本名(
),右侧是对应命令(
),中间用两个空格分隔。它不显示颜色、不支持分页,也不展开数组值(若
是数组,只显示第一个元素)。
脚本名可含冒号和中划线(如
、
),但不能含空格、未转义引号或 Unicode 控制字符
生命周期钩子(如
)会列出,但它们是 Composer 内置事件,不是你定义的“自定义脚本”
字段仅影响
显示,对
无任何作用
如何让自定义脚本带描述?
原生
不支持描述字段。真正可行的方式只有两种:
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
升级到 Composer 2.2+,并在
中同时定义
和
,但注意:这只会让
显示描述,
仍只输出原始两列
在脚本值里手动加
提示,例如:
—— 描述只是运行时打印,不参与元数据管理
别指望靠这个实现文档化;脚本用途、依赖、执行顺序这些信息,得靠团队约定或写进
,Composer 不管。
想看更全的脚本视图?
不够用
只展示
下显式定义的条目,不包括:
事件钩子的完整执行链(比如
是否被某插件注册)
全局安装的插件提供的脚本命令(如
)
通过
的
或第三方扩展动态注入的脚本
如果发现某个脚本明明写了却跑不起来,大概率不是
没列出来,而是执行路径、PHP 版本、vendor 二进制缺失或 Windows 下 shell 兼容性问题——这时候要盯的是
的详细报错,而不是反复刷新
输出。
composer run-script --listcomposer.jsonscriptscomposer run-script --listcomposer.jsonscriptsscript"scripts ":"scripts": { ... }scripts-descriptionsscripts{}ScriptsSCRIPTScomposer.json--verbosecomposer run-script --listkeyvaluevaluetest:unitphpcs:fixpost-install-cmdscripts-descriptionscomposer listrun-script --listcomposer run-script --listcomposer.jsonscriptsscripts-descriptionscomposer listrun-script --listecho"test": "echo '▶ Running PHPUnit...'; php vendor/bin/phpunit"README.md--listcomposer run-script --listscriptspre-autoload-dumplaravel:optimizecomposer.jsonextra--listcomposer run test -v--list