📦 ListPackagesWithData
获取包名列表,并附带指定的附加字段(如仓库 URL、类型、是否废弃)。
何时使用
📦 一次拿到包名 + 仓库地址,避免对每个包再调 GetPackage;🚮 找出已废弃(abandoned)的包做治理;🧩 构建「包名 → 仓库」映射表用于镜像或分析。
签名
go
func (c *ComposerClient) ListPackagesWithData(fields []string) (*domain.PackageListWithDataResponse, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
fields | []string | 附加字段名列表,如 []string{"repository", "type", "abandoned"} |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 结果 | *domain.PackageListWithDataResponse | Packages 为 map[包名]PackageData,含请求字段 |
| 错误 | error | HTTP 失败、非 200、JSON 解析失败时返回 |
对应端点:GET https://packagist.org/packages/list.json?fields[]={f}&fields[]={f}。
示例
go
package main
import (
"fmt"
"log"
"time"
"github.com/scagogogo/composer-skills/pkg/client"
)
func main() {
c := client.NewComposerClient(30 * time.Second)
resp, err := c.ListPackagesWithData([]string{"repository", "type"})
if err != nil {
log.Fatal(err)
}
fmt.Printf("包数: %d\n", len(resp.Packages))
for name, data := range resp.Packages {
fmt.Printf(" %s -> %s (%s)\n", name, data.Repository, data.Type)
}
}进阶
可用字段
常见可用字段:repository(仓库 URL)、type(包类型)、abandoned(是否废弃,可为 bool 或替代包名字符串)。
- 📋 只需包名用
ListPackages(响应更小)。 - 📊 需下载量 / star 等指标用
GetPackage或ListPopularPackages。