composer show 是查作者和描述的唯一可靠命令,它直接解析包的 composer.json 元数据,字段是否显示取决于维护者是否填写;未安装包需加 --remote 参数,或直调 packagist api 获取最新元数据。

composer show 是查作者和描述的唯一可靠命令
Composer 没有 composer author 或 composer describe 这类专用命令,composer show vendor/package-name 是读取作者(authors)和描述(description)字段的**唯一内置方式**。它直接解析包的 composer.json 元数据,字段是否显示完全取决于包维护者有没有填——不是命令失效,是上游没写。
- 填了
authors的包(如monolog/monolog)会显示authors Seldaek <matthieu></matthieu> - 没填的包(如
psr/log)就压根不出现authors这一行,description通常还在,但可能极简(比如只有 "Common interface for logging libraries") -
composer search完全不返回作者或描述详情——它只按关键词模糊匹配包名,输出格式固定为vendor/name : description snippet,且 snippet 是 Packagist 抓取的摘要,常被截断、不准确,也不能指定包名精确查询
没装的包怎么查作者?用 --remote,别信 search
想看还没 require 进项目的包的作者信息,必须加 --remote 参数:composer show --remote laravel/framework。它会实时请求 Packagist API,拿到最新稳定版的完整 composer.json,包括 authors 字段(如果对方填了)。
-
composer search laravel只返回类似laravel/framework : The Laravel Framework.的一行,看不到作者,也分不清是哪个laravel/*子包 -
--remote不支持指定历史版本(如v9.5.0),只能查最新版;若 Packagist 缓存滞后,元数据可能比 GitHub 上的composer.json少字段 - 最稳的兜底方案是直调 API:
curl -s https://packagist.org/packages/monolog/monolog.json | jq '.package.authors',字段最全,但需要本地装jq
作者字段为什么经常为空?这不是 bug,是设计如此
authors 在 Composer 规范里是**完全可选字段**,不像 license 或 name 那样强制。很多包要么留空,要么只写个名字没邮箱,甚至填的是组织名(如 twbs)而非具体人。
- PSR 规范包(
psr/*)、CI 自动发布的工具包、私有 fork 分支,普遍不填authors - 已填的字段也不会自动更新——某个包 2018 年写的
"name": "John Doe",可能他早就不维护了 - 别靠作者判断质量:有人把
authors写得巨详细,代码却三年没 commit;也有人匿名发布,但每周修三个 issue - 真要确认谁在维护,优先看
source字段的 Git URL(composer show -s vendor/package),再点进去看最近的 commit 记录
批量提取作者?用 --format=json + jq,别手敲
人工翻 composer show 输出查几十个包的作者,效率低还易漏行。--format=json 是自动化处理的正确起点,它输出标准 JSON,字段名明确(如 .authors、.description),配合 jq 可精准提取。
- 查当前项目所有已安装包的作者名:
composer show --format=json --installed | jq -r '.packages[].authors[].name' - 查单个包的许可证和描述:
composer show --format=json monolog/monolog | jq -r '.license, .description' - 没装
jq?grep硬匹配容易断行或漏字段(比如authors跨多行),不推荐用于生产环境审计 - 注意:JSON 输出中
authors是数组,结构可能是[{"name":"Jordi Boggiano","email":"j.boggiano@seld.be"}],所以要用.authors[].name而不是.authors.name
source 地址、最近 commit 时间、issue 响应速度,而不是那一行静态的 authors。










