composer run-script --list 是查看当前项目 scripts 字段定义脚本的唯一标准命令,但仅当 composer.json 存在合法顶层 "scripts" 键(如 "scripts": {})时才输出两列纯文本:左为脚本名、右为对应命令;缺字段、拼写错误、不在项目根目录或 json 语法错误均导致静默无输出。

composer run-script --list 是查看当前项目 scripts 字段定义的脚本的唯一标准命令,但它只在 composer.json 存在合法顶层 "scripts" 键时才输出内容;缺字段、拼错、不在项目根目录,都会静默失败——不是没脚本,是压根没读到配置。
为什么 composer run-script --list 没输出?
最常见原因不是脚本没写,而是 Composer 根本没识别到 scripts 配置:
-
composer.json里压根没有"scripts"这个键(哪怕值是空对象{},也得存在) - 键名拼错了:比如写成
"script"、"Scripts"(大小写敏感)、"scripts "(末尾空格) - 当前终端不在项目根目录,
composer.json找不到或权限不足 - JSON 语法错误:IDE 自动删了末尾逗号、加了 BOM、用了中文引号,导致解析失败(加
--verbose可看到警告)
composer run-script --list 输出内容怎么看?
它输出纯文本两列,左为脚本名(key),右为对应命令(value),中间用两个空格分隔:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
test:unit vendor/bin/phpunit --testsuite unit cs:fix php-cs-fixer fix --dry-run post-install-cmd chmod +x bin/*
- 只显示
scripts下显式定义的条目,不展开数组值(如"test": ["phpunit", "phpstan"]只显示第一项) - 支持冒号和中划线命名(
test:unit、phpcs:fix),但不能含空格或未转义引号 - 生命周期钩子(如
post-install-cmd)会列出,但它们不是你手动执行的“脚本”,而是事件触发时自动运行 - 不显示描述、不支持颜色、不分页,也不受
scripts-descriptions影响
想看更全的脚本视图?别只信 --list
composer run-script --list 只反映“声明”,不反映“可用性”或“完整结构”。真正可靠的方式是直接查文件:
- 用
jq '.scripts' composer.json查原始 JSON 结构(需安装jq) - 用
grep -E '^( *")?(pre|post|auto|install|update|dump)' composer.json快速定位常见事件钩子 - 检查脚本值是否真能执行:
composer run-script test报错,往往是因为命令不存在(如phpunit没装)、路径不对(相对路径失效)、或--no-dev导致vendor/bin/命令不可用
脚本列表只是个索引,不校验命令是否存在、不体现执行顺序、也不说明依赖关系。一个 "test" 脚本背后可能是三条命令、两个环境变量注入、一次权限修改——这些全得靠打开 composer.json 自己看。










