composer show 命令不显示作者邮箱或社区链接,因 authors 字段无强制格式且多数仅填 name;可靠方式是解析 vendor/ 下各包 composer.json 的 authors、support.source 等字段。

composer show 命令本身不提供作者邮箱或社区链接
直接运行 composer show 或 composer show --tree 只会输出包名、版本和依赖关系,author 字段通常只显示名字(如 "name": "nategood"),几乎从不包含邮箱、GitHub 主页或 Slack 链接。这不是 Composer 的设计缺陷,而是 composer.json 中的 authors 字段本就无强制格式要求,多数开发者只填了 name,留空 email 和 homepage。
用 composer show --format=json + jq 提取结构化作者信息
真正能批量捞出可用联系信息的方式,是结合 JSON 输出和命令行解析工具。前提是目标包在 composer.json 里确实写了完整字段:
-
composer show --format=json --no-ansi输出所有已安装包的完整元数据(含authors数组) - 用
jq过滤非空的email或homepage:例如jq -r '.[] | select(.authors != null) | .authors[] | select(.email != null or .homepage != null) | "\(.name) \(.email // "") \(.homepage // "")"' - 注意:部分包把 GitHub 地址写在
source.type为git的source.url里,而非authors,需额外提取
vendor 目录下 package 的 composer.json 才是唯一可信源
别信 Packagist 网站页面上“Maintainer”栏——它可能早已过期。真实有效的联系信息只存在于你本地 vendor/ 下每个包自己的 composer.json 文件中。但手动翻几百个目录不现实,所以可靠做法是:
- 写个小脚本遍历
vendor/*/composer.json - 用
jq或 PHP 的json_decode(file_get_contents(...))读取authors和support字段(后者常含issues、source、forum) - 特别注意
support.source:90% 的活跃开源包会在这里放 GitHub/GitLab 仓库地址,比邮箱更实用
没有“一键”方案,因为社区联系信息本质是稀疏且非标准化的
你无法靠一条命令拿到所有包的可联络方式,根本原因有三个:
- Composer 不校验
authors字段内容,空email合法且常见 - 很多维护者把沟通渠道放在
support或extra里,字段名不统一(比如有的用slack,有的用chat) - 部分包(尤其是老旧或个人项目)压根没填任何联系信息,只留了个名字
真要推进协作,与其强求“所有作者邮箱”,不如优先提取 support.source 和 support.issues,这两个字段在现代 PHP 包中覆盖率高、格式稳定,也更接近实际沟通入口。










