composer show 是查包作者和所有者的首选命令,但 authors 字段常为空,需结合 homepage 或 source 字段解析仓库 URL 获取实际所有者;metapackage 和 project 类型无需查作者;composer search 不含作者信息。

查包作者和所有者,composer show 是第一道门,但别指望它全给你
包的“所有者”在 Composer 里没有独立字段,实际对应的是 authors(作者)或 homepage/source 指向的仓库所有者。而 composer show vendor/package-name 确实会输出 authors,但很多包填的是空数组 []——不是你命令错了,是包本身没填。
- 先跑一次
composer show monolog/monolog,看authors行有没有人名;没有?别停,继续往下 - 重点盯
homepage字段:比如https://github.com/Seldaek/monolog,斜杠后Seldaek就是 GitHub 上的实际所有者 -
source字段更可靠,尤其当homepage为空时;它直接给出 Git 仓库地址,所有者一目了然 - 如果
type是metapackage或project,基本不用查作者——这类包不提供代码,也没有实质维护者
为什么 composer search 找不到作者信息
composer search 只索引包名、描述、关键词,完全不抓取 authors 或仓库归属字段。你搜 composer search monolog,返回结果里绝不会出现 “Seldaek” 或 “Ocramius” 这类名字。
- 想确认某人是否发布过包?只能去 Packagist.org 页面手动搜用户名,或直接访问
https://packagist.org/packages/list.json?username=xxx(需 API 调用) - 想批量查多个包的所有者?靠
composer show --format=json提取source.url,再用脚本解析域名或路径,别指望一条命令搞定 - 别用
composer info替代show:它在新版 Composer 中已弃用,行为不稳定,且输出字段更少
--remote 查到的是 Packagist 的元数据,不是实时 Git 仓库状态
composer show --remote vendor/package-name 拿到的是 Packagist 缓存的最新版 composer.json 内容,包括 authors 和 source,但它不保证和 GitHub/GitLab 当前主分支一致。
- 比如某包刚合并 PR 更新了
composer.json里的作者邮箱,但还没发新 tag,Packagist 就不会更新--remote结果 -
--remote不支持指定版本号查询作者;composer show vendor/package v2.0.0这种写法只对本地已安装或 lock 文件里存在的版本有效 - 若
--remote返回authors: [],唯一靠谱的做法是打开source.url链接,翻到仓库根目录下的composer.json原文看
全局包的所有者怎么查?别漏掉 composer global show
全局安装的工具(如 laravel/installer)所有者判断逻辑一样,但命令必须带 global,否则查的是当前项目依赖。
- 运行
composer global show laravel/installer,看它的source是不是指向https://github.com/laravel/installer - 注意:
composer global show不受当前目录影响,哪怕你在/tmp下执行也有效;而composer show必须在项目根目录,否则报错或返回空 - 如果
global show找不到包,先确认composer config --global home输出路径下vendor/确实存在对应目录,再查
composer show 拿到 source.url → 手动打开 → 看 GitHub/GitLab 页面右上角的 owner 名字。任何想绕过这一步的自动化方案,都容易在 meta 包、fork 包或未同步的 Packagist 数据上栽跟头。










