🧩 GetPackageWithV2Metadata
获取 Composer V2 元数据格式的包信息(原始 JSON 字节),含完整版本树。
何时使用
🧩 自建 Composer 仓库或镜像时,需要提供 V2 解析器所需的 p2 元数据;⚙️ 需要拿到精确到每个版本的 version 数组(含 dist/source 等)做版本约束求解。
签名
go
func (c *ComposerClient) GetPackageWithV2Metadata(packageName string) ([]byte, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
packageName | string | 包名,如 symfony/console |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 数据 | []byte | V2 元数据原始 JSON 字节 |
| 错误 | error | HTTP 失败、非 200 时返回 |
对应端点:GET https://repo.packagist.org/p2/{name}.json(走 repoURL,默认 https://repo.packagist.org)。
示例
go
package main
import (
"fmt"
"log"
"time"
"github.com/scagogogo/composer-skills/pkg/client"
)
func main() {
c := client.NewComposerClient(30 * time.Second)
data, err := c.GetPackageWithV2Metadata("symfony/console")
if err != nil {
log.Fatal(err)
}
// 自行按 V2 schema 解析,或直接落盘
fmt.Println(string(data))
}进阶
为什么返回 []byte?
V2 元数据结构较复杂(含 packages.{name}.{version} 多层嵌套与 minified 字段),不同使用方关心的字段不同,因此 SDK 不强行建模,把原始 JSON 交给调用方按需解析。
- 🌐 自建镜像可用
WithRepoURL指向私有 V2 仓库。 - 🧪 取开发分支版本用
GetPackageDevVersions。 - 📦 想要结构化的包信息(含下载统计)用
GetPackage。