📊 GetPackageStats
获取指定包的下载统计与可用版本列表。
何时使用
📈 监控包的每日 / 每月 / 总下载量并绘制趋势;🎯 评估某个包的流行度以决定是否引入;📋 列出包的可用版本以辅助版本约束求解。
签名
go
func (c *ComposerClient) GetPackageStats(packageName string) (*domain.PackageStatsResponse, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
packageName | string | 包名,如 symfony/console |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 结果 | *domain.PackageStatsResponse | 含下载统计(total/monthly/daily)、版本列表、统计日期 |
| 错误 | error | HTTP 失败、非 200、JSON 解析失败时返回 |
对应端点:GET https://packagist.org/packages/{name}/stats.json。
示例
go
package main
import (
"fmt"
"log"
"time"
"github.com/scagogogo/composer-skills/pkg/client"
)
func main() {
c := client.NewComposerClient(30 * time.Second)
stats, err := c.GetPackageStats("symfony/console")
if err != nil {
log.Fatal(err)
}
fmt.Printf("总下载: %d\n", stats.Downloads.Total)
fmt.Printf("本月下载: %d\n", stats.Downloads.Monthly)
fmt.Printf("今日下载: %d\n", stats.Downloads.Daily)
fmt.Printf("可用版本数: %d\n", len(stats.Versions))
fmt.Printf("统计起始日期: %s\n", stats.Date)
}进阶
- 📦 想一次拿到下载量 + star + 维护者等完整信息,用
GetPackage(其Downloads字段结构相同)。 - 🚀 增量同步包变更用
GetPackageChanges。 - 📈 仓库级总量统计用
GetStatistics。