Composer 不显示下载量,因 Packagist API 不返回 downloads 字段;需访问网页或调用其 JSON 接口获取 monthly 下载量,且须结合 GitHub stars、commit 活跃度等多维度验证。

Composer 本身无法查看包的下载量和热度——这些数据不在它的职责范围内,也不通过任何 composer 命令暴露。 它只管安装、更新、解析依赖;真实热度得去 Packagist 和 GitHub 查,而且得手动拼接信息。
为什么 composer show 不显示下载量?
因为 Packagist 的下载统计(如 monthly、total)不通过 Composer API 返回。官方 API 只提供 favers、github_stars、time 等元数据,而 downloads 字段只在网页端渲染,API 响应里压根没有 total_downloads 这个键。
-
composer show monolog/monolog只输出本地已安装包的版本、依赖、autoload 配置等 -
composer show --remote monolog/monolog会拉取 Packagist 的最新元数据,但依然不含下载量 - 想看下载量?必须打开浏览器访问
https://packagist.org/packages/monolog/monolog,右上角找 “Total downloads”
用 API 批量查月下载量:靠 curl + jq 解析 JSON
Packagist 提供了公开的包级 JSON 接口,其中 .package.downloads.monthly 是目前最接近“真实使用强度”的指标(比 GitHub star 更反映实际集成量)。
- 执行:
curl -s "https://packagist.org/packages/monolog/monolog.json" | jq '.package.downloads.monthly' - 注意:
monthly是估算值,新包可能为null;且该字段仅存在于 Packagist API,和 GitHub 仓库无直接绑定 - 如果没装
jq,可用 Python 一行替代:curl -s ... | python3 -c "import sys, json; print(json.load(sys.stdin)['package']['downloads']['monthly'])"
Star 数和下载量为何经常对不上?
因为它们来自两个独立系统:GitHub star 属于代码托管平台,Packagist 下载量属于包分发平台。两者之间没有强制映射规则。
- 一个包在 Packagist 上叫
foo/bar,其source.url可能是https://github.com/baz/bar,名字不一致就得人工确认 -
composer show --show-links foo/bar能快速打开 source 或 homepage,但链接可能失效、跳转到 GitLab、甚至指向私有仓库 - 别信自动脚本“猜仓库名”,很多包的 GitHub 名含下划线、大小写混用,或用了组织重定向(如
symfony/console源码实际在symfony/symfony的子目录)
真正麻烦的不是查不到,而是查到的数据分散、口径不一、无法交叉验证。如果你在做技术选型或审计,建议把 Packagist 的 monthly 下载量、GitHub 的 stars + last commit + open issues、以及 dependents 数三者并列看——单看任何一个都容易误判。










