composer show 是唯一能查 authors 的命令,它通过显示包的 composer.json 内容来呈现作者信息,但仅限已安装包;查远程包需用 --remote 或 packagist api。

composer show 是唯一能查 authors 的命令
Composer 没有 composer author、composer who 这类快捷命令,authors 只是 composer.json 里的一个可选字段,是否显示全看包维护者填没填。运行 composer show vendor/package-name 后如果输出里有 authors 一行,说明它写了;如果没有,不是你操作错了,是包本身没声明。
-
monolog/monolog会显示作者(Jordi Boggiano 等),因为它的composer.json明确写了"authors"数组 -
psr/log通常不显示,PSR 规范包普遍不填这个字段 - 漏掉
vendor前缀(比如只输composer show framework)会报错Package framework not found - 字段值可能是数组:
[{"name": "Jordi Boggiano", "email": "j.boggiano@seld.be"}],别默认“就一个名字”
没装的包怎么查作者?用 --remote 或直连 Packagist API
composer show 默认只查本地 vendor/ 下已安装的包;想查还没 require 的包,得主动告诉 Composer:“去远程拿”。最常用的是加 --remote 参数,但它依赖 Packagist 缓存,偶尔字段不全。
- 查远程最新版:
composer show --remote monolog/monolog - 更稳的方式是直调 API:
curl -s https://packagist.org/packages/monolog/monolog.json | jq '.package.authors'(需提前装jq) -
--remote不支持指定历史版本,比如不能加--version=v9.5.0,只能看最新稳定版 - 有些包在 Packagist 上的元数据比实际
composer.json少字段,API 方式才最接近原始定义
批量提取作者名?--format=json + jq 是正解
人工翻终端太慢,真要审计一堆包的作者归属(比如确认是否都在可信组织下),就得自动化。这时候 --format=json 就不可替代了——它输出标准 JSON,方便用 jq 精准切字段。
- 提取所有作者姓名:
composer show --format=json monolog/monolog | jq -r '.authors[].name' - 查许可证:
composer show --format=json guzzlehttp/guzzle | jq -r '.license' - 没装
jq?那就只能靠grep+ 正则硬匹配,但 JSON 跨行时容易漏,不推荐 - 注意字段名大小写:
require是键名,不是requires;homepage有时为空,可顺手看source.url
authors 字段 ≠ 维护者,也不代表质量
这个字段纯属“发布时谁愿意署名”,既不会自动关联 Git 提交记录,也不会随维护人变更而更新。填了作者,不等于他还管这个包;没填,也不代表没人维护。
- 很多组织型项目(如 Laravel、Symfony)会在
composer.json里列核心维护者,但大量小工具包、CI 自动发布的包压根不填 - 字段内容可能多年未改,比如某包作者还是 2018 年的邮箱,实际早就不参与了
- 别靠作者判断可靠性:有人把作者写得巨详细,代码却三年没更新;也有人匿名发布,但每周修三个 issue
- 真正要看活跃度,得结合
source.url去 GitHub 查pushed_at、stargazers_count,但这得另走 GitHub API
最容易被忽略的一点:authors 是手动填写的自由字段,Packagist 不校验、不补全、不联动 Git 记录。它只是元数据里的一行字,不是权威身份凭证。










