作者信息需通过 composer show vendor/package-name 查看,若未安装则加 --remote 或调用 Packagist API;该字段非强制,存在与否取决于包维护者是否在 composer.json 中声明。

作者信息在哪查?composer show 是唯一靠谱入口
Composer 没有独立的 composer author 或 composer who 这类命令,作者(authors)只是包元数据里的一个字段,是否显示完全取决于该包的 composer.json 里有没有填。你运行 composer show vendor/package-name,输出里如果有 authors 一栏,说明作者信息被明确声明了;如果为空或压根没出现这行,那不是你命令错了,是包本身没填。
-
composer show monolog/monolog会显示authors字段(它填了) -
composer show psr/log通常不显示作者(PSR 规范包普遍不填) - 别只输包名漏掉 vendor:比如
composer show framework会报错Package framework not found,必须写全laravel/framework
没装的包怎么查作者?加 --remote 或直连 Packagist API
想看还没安装的包的作者信息,composer show 默认只查本地 vendor/,得主动告诉它“去远程查”:
- 用
composer show --remote vendor/package-name—— 它会从 Packagist 拉最新元数据,包括authors(如果对方填了) - 但注意:
--remote不保证返回所有字段,有些包在 Packagist 上的缓存元数据可能比实际composer.json少字段 - 更稳的方式是直接 curl Packagist API:
curl -s https://packagist.org/packages/monolog/monolog.json | jq '.package.authors'(需装jq),它返回的是原始 JSON,字段最全
为什么有时看到作者,有时又空着?这不是 bug,是包维护者的自由选择
Composer 对 authors 字段不做强制要求,很多组织型项目(如 Symfony、Laravel)会在 composer.json 里写上核心维护者,但大量小工具包、规范包(psr/*)、或由 CI 自动发布的包,压根不填这个字段。它和许可证(license)不同——后者影响法律合规性,前者纯属可选元信息。
- 填了作者 ≠ 该人还在维护:字段不会自动更新,可能多年未改
- 作者可能是数组:
[{"name": "Jordi Boggiano", "email": "j.boggiano@seld.be"}],所以别指望总是一个名字一行 - 别靠作者判断质量:有人包作者写得巨详细,代码却三年没更新;也有人匿名发布,但每周修三个 issue
想批量提取作者?--format=json + jq 是正解
人工翻终端太慢,真要批量审计(比如检查团队引入的所有包是否来自可信作者),就得自动化。这时候 --format=json 就派上用场了:
-
composer show --format=json monolog/monolog | jq -r '.authors[].name'输出作者名(加-r去引号) - 若作者字段为空,
jq会报错或静默失败,建议加2>/dev/null忽略错误 - 没装
jq?用grep -o '"name": "[^"]*"'硬匹配,但容易断行或漏嵌套结构,可靠性差一截 - 注意:
jq '.authors可能返回 null,而.authors[].name在 null 时会报错,生产脚本里得先判空
作者字段本质上是个“尽力而为”的提示信息,它不参与依赖解析、不触发任何逻辑、也不会被 autoloader 加载——你查它,只是为了心里有个数:这包背后是谁,是不是你听说过的名字。真要确认可靠性,还是得看测试覆盖率、issue 响应速度、最近 commit 时间这些硬指标。










