因为 Composer 只读取 composer.json 根目录下的 scripts 字段,且要求该字段是合法 JSON 对象;常见失效原因包括 scripts 拼写错误(如 script)、JSON 语法错误、不在项目根目录执行、Composer 版本不兼容等。

为什么 composer run-script --list 有时不显示自定义脚本?
因为 Composer 只读取 composer.json 根目录下的 scripts 字段,且要求该字段是合法 JSON 对象。常见失效原因包括:
• scripts 被误写成 script 或 Script(大小写敏感)
• composer.json 存在语法错误(如末尾多逗号、单引号代替双引号)
• 当前执行目录不是项目根目录(即不含 composer.json 的目录)
• 使用了 Composer 1.x,而某些新语法(如数组式脚本)仅在 2.0+ 支持
composer run-script 执行时找不到命令的典型表现
报错类似 Script xxx not found,本质是脚本名未在 scripts 中注册,或拼写不一致。注意:
• 脚本名区分大小写,"test" 和 "Test" 是两个不同脚本
• 不支持通配符或正则匹配,必须完全匹配键名
• 如果脚本值是数组(如 ["@phpunit", "--colors"]),整个数组会被当作一条命令链执行,但 --list 仍只显示键名
• 自定义脚本无法通过 --list 查看其内部命令细节,只能看到注册的键名
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
如何让 composer run-script --list 显示更实用的信息?
默认输出只有脚本名和类型(script / event),不带说明。增强可读性可:
• 在 scripts 中使用 ## 注释(Composer 2.2+ 支持):
"scripts": {
"dev-start": "php -S localhost:8000 -t public ## 启动本地开发服务器"
}• 配合
composer run-script --list --verbose 查看完整注册结构(含事件监听器)• 将高频脚本按用途分组,例如用前缀
ci:、dev:、test:,便于 grep 过滤:composer run-script --list | grep 'dev:'
替代方案:直接检查 composer.json 中的 scripts 字段
当 --list 输出异常或需确认原始定义时,最可靠方式是人工查看:
• 运行 cat composer.json | jq '.scripts'(需安装 jq)
• 或简单用 grep -A 20 '"scripts":' composer.json 快速定位
• 注意:Composer 不校验脚本值是否真实可执行,所以即使 "lint": "phpcs" 写错了二进制名,--list 依然会显示它
• 多环境脚本(如 post-install-cmd)不会出现在 --list 输出中,它们属于事件钩子,不是用户调用脚本

















