跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Composer如何列出脚本命令_Composer scripts列表查看方法【实用】

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

相关文章