Composer 不支持 scripts-descriptions 字段,它是非官方扩展或误传;正确做法是用注释说明脚本、通过插件增强或维护独立文档。

Composer 本身并不支持 scripts-descriptions 这个字段,它不是 Composer 官方定义的配置项。如果你在某个项目或文档中看到 scripts-descriptions,那很可能是自定义约定、第三方插件(如 cgr 或某些 IDE 插件)的扩展用法,或者是误传的写法。
正确为 scripts 添加说明的方式
Composer 原生只支持在 scripts 下定义命令,但不提供内置的“描述”字段。不过有几种实用且被广泛采用的方法来补充说明:
-
使用注释(推荐):在
composer.json中直接添加行内或块级注释(JSON5 风格不被标准 JSON 支持,但大多数现代工具如 Composer、VS Code、PHPStorm 能识别并忽略它们):
// 清理缓存并重建自动加载映射
// 推荐在开发环境部署后运行
"clear-and-dump": "php artisan config:clear && php artisan route:clear && composer dump-autoload" -
利用
composer help的扩展机制:通过自定义命令类(需配合插件或scripts调用 PHP 类),在类中实现getDescription()方法——但这需要额外开发,不属于composer.json配置本身。 -
维护独立的 README.md 或 CONTRIBUTING.md:在文档中统一列出所有脚本及其用途、触发时机和参数示例,例如:
`composer run test` —— 执行 PHPUnit 测试并生成覆盖率报告
`composer run dev-start` —— 启动本地开发服务器(依赖 Laravel Sail / Symfony CLI)
为什么不能直接写 "scripts-descriptions"
因为 composer.json 是标准 JSON 文件,Composer 解析器只会读取它明确支持的顶层字段(如 scripts, autoload, require)。任何未声明的字段(包括 scripts-descriptions)会被完全忽略,既不会报错,也不会生效。
替代方案:用 Composer 插件增强体验
如果你希望终端里执行 composer list 时显示脚本说明,可考虑安装社区插件:
- maglnet/composer-require-checker(侧重依赖检查,非脚本说明)
-
Symfony CLI:支持
symfony console list并可集成自定义命令描述(适用于 Symfony 项目) - 自研小插件:监听
CommandEvent,在list命令输出前注入说明(适合团队内部标准化)
不复杂但容易忽略:真正起作用的是人读得懂的注释 + 文档,而不是试图让 JSON 自带语义。










