🧾 GetLicensesInfo
以结构化方式获取当前项目依赖的许可证信息,返回 *LicensesResult。
何时使用
当你要在应用内对许可证做归类统计、合规校验、或生成自定义许可证报告时使用。内部执行 composer licenses --format json 并解析。
签名
go
func (c *Composer) GetLicensesInfo() (*LicensesResult, error)参数
该方法不接受任何参数。
返回值
*LicensesResult:结构化许可证结果,包含每个包的名称、版本与许可证列表。error:执行命令或解析 JSON 失败时返回相应错误信息。
相关结构:
go
type LicenseInfo struct {
Package string `json:"package"`
Version string `json:"version,omitempty"`
Licenses []string `json:"licenses,omitempty"`
}
type LicensesResult struct {
Licenses []LicenseInfo `json:"licenses,omitempty"`
}示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatalf("初始化失败: %v", err)
}
result, err := comp.GetLicensesInfo()
if err != nil {
log.Fatalf("获取许可证信息失败: %v", err)
}
for _, li := range result.Licenses {
fmt.Printf("%s (%s): %v\n", li.Package, li.Version, li.Licenses)
}
}进阶
- 解析由
ParseLicensesResult完成,可单独用于解析composer licenses --format=json的原始输出。 - 底层格式化输出由
LicensesWithFormat提供,默认纯文本见Licenses。 - 注意:
composer licenses --format=json原始输出为{"vendor/package":["MIT"],...}映射,解析时映射的键被填入LicenseInfo.Package。