🧩 ListPackagesByType
获取指定类型(type)的所有包名,如 composer-plugin、library。
何时使用
🧩 列出所有 composer-plugin 类型包做插件发现;🏗️ 按类型统计生态构成;🔍 在专用工具(如只看 project 模板)里过滤候选包。
签名
go
func (c *ComposerClient) ListPackagesByType(packageType string) (*domain.PackageListResponse, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
packageType | string | 包类型,如 library、composer-plugin、project |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 结果 | *domain.PackageListResponse | PackageNames 为该类型的包名列表 |
| 错误 | error | HTTP 失败、非 200、JSON 解析失败时返回 |
对应端点:GET https://packagist.org/packages/list.json?type={type}。SDK 会自动对 packageType 做 URL 编码。
示例
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.ListPackagesByType("composer-plugin")
if err != nil {
log.Fatal(err)
}
fmt.Printf("composer-plugin 类型包数: %d\n", len(resp.PackageNames))
for _, name := range resp.PackageNames[:5] {
fmt.Println(" -", name)
}
}进阶
- 🏢 按 vendor 过滤用
ListPackagesByVendor。 - 🔍 按类型 + 关键词搜索用
SearchPackagesByType(搜索结果带下载量等指标)。 - 📋 获取全量包名用
ListPackages。