📋 ListPackages
获取 Packagist 上所有包名列表。
何时使用
📋 构建本地包名索引或搜索引擎;🛠️ 自建镜像的初始化全量清单;🔍 配合 GetPackage 批量拉取详情。
签名
go
func (c *ComposerClient) ListPackages() (*domain.PackageListResponse, error)参数
本方法无参数。
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 结果 | *domain.PackageListResponse | PackageNames 为 []string 包名列表 |
| 错误 | error | HTTP 失败、非 200、JSON 解析失败时返回 |
对应端点:GET https://packagist.org/packages/list.json。
示例
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.ListPackages()
if err != nil {
log.Fatal(err)
}
fmt.Printf("包总数: %d\n", len(resp.PackageNames))
for _, name := range resp.PackageNames[:3] {
fmt.Println(" -", name)
}
}进阶
数据量
该端点返回全量包名(数十万条),响应体较大。如需按条件过滤请用下面更精确的变体,避免拉取全量再本地过滤。
- 🏢 按供应商过滤用
ListPackagesByVendor。 - 🧩 按类型过滤用
ListPackagesByType。 - 📦 需要附带仓库 / 类型等字段用
ListPackagesWithData。