Skip to content

🧾 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

基于 MIT 许可证发布