composer如何查看包的authors信息_composer包作者元数据查询【归属】

1次阅读

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

composer如何查看包的authors信息_composer包作者元数据查询【归属】

composer show 是唯一能查 authors 的命令

Composer 没有 composer authorcomposer 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 是键名,不是 requireshomepage 有时为空,可顺手看 source.url

authors 字段 ≠ 维护者,也不代表质量

这个字段纯属“发布时谁愿意署名”,既不会自动关联 git 提交记录,也不会随维护人变更而更新。填了作者,不等于他还管这个包;没填,也不代表没人维护。

  • 很多组织型项目(如 laravelsymfony)会在 composer.json 里列核心维护者,但大量小工具包、CI 自动发布的包压根不填
  • 字段内容可能多年未改,比如某包作者还是 2018 年的邮箱,实际早就不参与了
  • 别靠作者判断可靠性:有人把作者写得巨详细,代码却三年没更新;也有人匿名发布,但每周修三个 issue
  • 真正要看活跃度,得结合 source.urlgithubpushed_atstargazers_count,但这得另走 GitHub API

最容易被忽略的一点:authors 是手动填写的自由字段,Packagist 不校验、不补全、不联动 Git 记录。它只是元数据里的一行字,不是权威身份凭证。

text=ZqhQzanResources