composer 包下载量仅能查看 packagist 页面显示的滞后估算值,非实时、不精确、不可靠;其数据源于镜像请求日志采样,误差常超±20%,且不区分环境、不含私有包,无法用于监控或决策。

Composer 本身不提供包下载量或统计信息功能,官方仓库 packagist.org 也不公开实时下载数据——所谓“查看 Composer 包下载量”,实际只能查 Packagist 页面上显示的「累计安装数」(approximate install count),且该数字有严重滞后、去重、估算等限制,不可用于监控或决策。
packagist.org 上的 downloads 数字怎么来的
Packagist 并不实时统计每次 composer install 或 composer update。它只从镜像(如 packagist.org 自身及部分镜像节点)中采样部分请求日志,按包名 + 版本号聚合,并过滤明显异常请求(如高频刷量 IP)。最终展示的是「过去 30 天估算安装次数」,但:
- 不是精确值,误差常达 ±20% 甚至更高
- 不区分开发环境/生产环境,也不区分是否真正部署
- 旧版本一旦停止被更新,下载数很快归零或停滞
- 私有包、未提交到 Packagist 的 VCS 包完全不计入
想查某个包最近 30 天的 downloads,直接看网页就行
打开 https://packagist.org/packages/{vendor}/{package}(例如 https://packagist.org/packages/monolog/monolog),页面右上角会显示一个带小钟表图标的数字,标着「Downloads」。这个就是当前估算值。
注意:
- 该数字每 24 小时左右更新一次,不是实时刷新
- 点击数字可跳转到历史趋势图(
https://packagist.org/packages/{vendor}/{package}/stats),但仅保留最近 12 个月数据,且无 API 导出入口 - 趋势图里「Total installs」是累计估算,不是每日增量
别用 composer show 或 composer info 查下载量
这两个命令只返回本地已安装包的元信息:name、version、require、autoload 等,完全不包含远程统计字段。执行:
composer show monolog/monolog
输出里不会有 downloads、installs、stats 这类字段——因为 Packagist API 返回的 package JSON 中,downloads 属于顶层统计字段,而 composer show 调用的是 /p/{vendor}/{package}.json 这类包详情接口,不带统计。
如果你硬要写脚本拉取,得手动请求 Packagist 的 stats 接口:
curl -s "https://packagist.org/packages/monolog/monolog/stats.json" | jq '.total'
但要注意:
- 该接口无认证、无配额,但可能被限流
- 返回的
total是累计估算,不是最近一次更新的 delta - 返回结构不稳定,Packagist 曾多次调整 stats 接口路径和字段名
真要监控自己包的采用情况,唯一靠谱的做法是:在包里埋点(比如发布新版本时发一条匿名 HTTP 请求到自己的统计服务),或者靠 GitHub stars / forks / issue 活跃度间接判断。别信那个右上角的数字——它连“参考价值”都勉强,只是个氛围组。










