composer 不支持 scripts 下直接添加 descriptions 键;脚本描述需通过命名规范(如“build:dist-for-production”)或 extra 中手动维护映射实现,但后者需插件支持;官方不内置 description 是因 scripts 本质为 shell 别名而非命令系统。

scripts 字段里没有 descriptions 键
Composer 官方 schema 不支持 scripts 下直接写 descriptions 字段——你加了也不会被识别,更不会出现在 composer list 输出里。所谓“脚本描述”,实际是靠其他方式间接实现的。
怎么让自定义命令在 composer list 里显示说明文字
Composer 本身不解析 scripts 的注释或额外字段,但支持通过 extra 字段 + 插件机制注入描述。不过绝大多数项目不需要这么重,推荐两种轻量做法:
- 用命名表达意图:比如不用
"build",而用"build:dist-for-production",冒号分隔层级,composer list会原样显示,用户一眼看懂用途 - 在
extra里手动维护映射(仅限 CLI 可视化):"extra": { "scripts-descriptions": { "test:unit": "Run PHPUnit unit tests only", "test:integration": "Run integration suite with DB connection" } }但这只是静态文本,Composer 不读它——得配合第三方插件(如hirak/prestissimo类工具)或自己写个 wrapper 脚本才能渲染出来
为什么官方不支持内置 description 字段
因为 scripts 的定位是执行载体,不是 CLI 命令注册表。它本质是事件钩子或快捷 shell 别名的集合,不是 Symfony Console 那种带元数据的命令系统。你看到的 composer test 或 composer post-update-cmd,底层都是直接 fork 进程执行字符串,没经过 Command 对象生命周期。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
所以别试图在 scripts 里塞 "description": "xxx" ——它会被忽略,还可能干扰某些静态分析工具对 JSON Schema 的校验。
真正靠谱的文档化方式
把说明写进 README.md,或者用 PHP 回调脚本开头加 docblock:
class MyScripts
{
/**
* @return void
* @desc Clears cache and re-dumps optimized autoloader (dev-only)
*/
public static function clearAndDump()
{
// ...
}
}
再配合 IDE 提示和 git blame 追溯,比藏在 JSON 里可靠得多。复杂逻辑别堆在 composer.json 里,那是配置文件,不是文档容器。










