composer show vendor/package-name 能查到作者邮箱,但前提是包的 composer.json 中 authors 字段明确填写了合法 email;该命令默认输出 authors 数组(含 name 和 email),但许多包仅填 name 或留空 email,甚至使用占位符(如 noreply@github.com)。

composer show 命令能查到作者邮箱吗
不能直接看到完整联系方式,composer show 默认只显示包名、版本和描述。作者信息(如 authors 字段)通常存在 composer.json 中,但命令行不默认展开。你需要显式请求详细信息。
执行 composer show --all 或逐个查包更可靠:
-
composer show vendor/package-name会列出authors数组(含name和email字段,如果包作者填了的话) - 多数开源包只填了
name,email经常为空或用占位符(如no-reply@example.com) - 有些包把联系人写在
support.email或support.issues里,这些字段不会被show命令输出,得看原始composer.json
批量提取所有依赖的 author.email 的实际做法
靠纯 Composer 命令做不到全自动提取——它没提供 JSON 输出或字段过滤功能。必须结合脚本解析 composer.lock。
推荐用 PHP 脚本(无需额外依赖):
php -r "
\$lock = json_decode(file_get_contents('composer.lock'), true);
foreach (\$lock['packages'] as \$pkg) {
if (isset(\$pkg['authors']) && is_array(\$pkg['authors'])) {
foreach (\$pkg['authors'] as \$a) {
if (!empty(\$a['email'])) {
echo \"{$pkg['name']} → {$a['email']}\n\";
}
}
}
}"
注意点:
-
composer.lock必须存在且已生成(运行过composer install) - 该脚本只读取
packages(即 require 的包),不包含packages-dev;如需开发依赖,得额外处理该键 - 部分包作者用
homepage或support.source提供联系入口,这些字段得手动加进脚本逻辑
为什么 composer info 不适合这个需求
composer info 是 composer show 的别名,行为完全一致,不支持字段筛选或导出。它也不接受 --format=json 这类参数(那是 composer list 的语法糖,不通用)。
常见误操作:
-
composer info --format=json→ 报错:[RuntimeException] The "--format" option does not exist. -
composer show -f json→ 无效,-f只对composer list生效 - 试图用
composer depends --tree查作者 → 它只显示依赖关系图,不含元数据
作者邮箱不可靠是常态,别指望全有
PHP 包生态里,作者联系方式不是强制字段。很多包:
- 用组织名代替个人名,
email留空 - 把
email设为 GitHub Actions 自动发信地址(如action@github.com) - 只在
README.md里写 Slack/Discord 链接,composer.json里什么都没填
真要联系维护者,优先看包的 support.issues 或 source.url,再顺藤摸瓜到 GitHub/GitLab 仓库的 Issues 或 Discussions 页面——那里才是实际有效的沟通渠道。











