Composer search 和 show 命令不提供 GitHub 星数,因 Packagist API 不返回 stars/forks 等元数据;需先通过 composer show 获取 source URL 或查 Packagist 页面找到 GitHub 仓库地址,再人工查看或调用 GitHub API 查询 stargazers_count。

Composer search 命令本身不提供 GitHub 星数
直接运行 composer search 或 composer show 都不会返回 GitHub stars、forks、仓库地址等元数据——这些信息不在 Packagist 的公开 API 返回字段里。Packagist 只同步包的版本、依赖、autoload 配置和主仓库 URL(如果维护者手动填写了 source),但不抓取或缓存 GitHub 的实时 star 数。
如何间接查到某个包的 GitHub 星数
需要把 Composer 包名映射到 GitHub 仓库,再调用 GitHub API 或人工访问。关键步骤是:先确认包的源码地址,再提取 owner/repo。
-
composer show vendor/package-name查看输出中的source行(例如:source : https://github.com/laravel/framework.git) - 若没显示
source,检查composer show -a vendor/package-name的完整输出,或去 packagist.org/packages/... 页面找 “Source” 链接 - 拿到 GitHub URL 后,用浏览器打开,右上角就能看到 star 数;或用 curl + GitHub API(需 token):
curl -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/laravel/framework
,响应里的stargazers_count就是星数
注意 packagist.org 和 GitHub 的映射可能不准
很多包在 composer.json 里没填 source,或者填的是 GitLab、Bitbucket 地址,甚至留空。这时候 composer show 输出只有 dist(zip 包下载地址),无法反推源码库。还有些包是自动镜像同步的(比如某些 WordPress 插件),根本没对应 GitHub 仓库。
- 不要依赖
composer search keyword的结果排序来判断流行度——它按包名/描述匹配度排序,和 star 数无关 -
composer show的downloads字段是 Packagist 统计的安装量(近 30 天),不是 GitHub star,两者无直接关系 - 有些高 star 包(如
monolog/monolog)确实源码在 GitHub,但低 star 的企业私有包或废弃包也可能在 Packagist 上显示“活跃”
自动化脚本查 star 数要小心限流和认证
如果你写脚本批量查,GitHub API 对未认证请求限流极严(60 次/小时),且会返回 403。必须加 personal access token:
curl -H "Authorization: Bearer YOUR_TOKEN" \ https://api.github.com/repos/vlucas/phpdotenv
另外,别用包名直接拼 GitHub 路径(比如把 foo/bar 硬套成 github.com/foo/bar)——vendor 名和 GitHub 用户名经常不一致(symfony/console 在 github.com/symfony/symfony 下,不是 github.com/symfony/console)。










