Skip to content

📊 GetPackageStats

获取指定包的下载统计与可用版本列表。

何时使用

📈 监控包的每日 / 每月 / 总下载量并绘制趋势;🎯 评估某个包的流行度以决定是否引入;📋 列出包的可用版本以辅助版本约束求解。

签名

go
func (c *ComposerClient) GetPackageStats(packageName string) (*domain.PackageStatsResponse, error)

参数

参数类型说明
packageNamestring包名,如 symfony/console

返回值

类型说明
结果*domain.PackageStatsResponse含下载统计(total/monthly/daily)、版本列表、统计日期
错误errorHTTP 失败、非 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

基于 MIT 许可证发布