Skip to content

🌳 ShowDependencyTree

以树形结构显示包的依赖关系,等价于 composer show --tree [package/name]

何时使用

  • 🧩 理清某个包间接引入了哪些传递依赖。
  • 🐛 排查版本冲突时梳理依赖链路。
  • 📊 生成依赖关系报告。

签名

go
func (c *Composer) ShowDependencyTree(packageName string) (string, error)

参数

参数类型说明
packageNamestring要显示依赖树的包名;传空字符串则显示整个项目的依赖树

返回值

类型说明
输出string依赖树的文本输出
错误error获取依赖树过程中发生错误时返回

示例

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)
    }

    // 显示整个项目的依赖树
    output, err := comp.ShowDependencyTree("")
    if err != nil {
        log.Fatalf("获取依赖树失败: %v", err)
    }
    fmt.Println("项目依赖树:", output)

    // 显示特定包的依赖树
    output, err = comp.ShowDependencyTree("symfony/console")
    if err != nil {
        log.Fatalf("获取依赖树失败: %v", err)
    }
    fmt.Println("包依赖树:", output)
}

进阶

结构化解析

parsing.go 提供了 ParseDependencyTreeOutputParseDependencyTreeJSON,可将树形输出解析为 []DependencyNode

go
type DependencyNode struct {
    Name     string           `json:"name"`
    Version  string           `json:"version,omitempty"`
    Children []DependencyNode `json:"children,omitempty"`
}

先用 ShowPackageWithFormat(pkg, "json") 拿 JSON,再调用 ParseDependencyTreeJSON 解析。

反向视角

想知道「谁依赖了某个包」用 ShowReverseDependenciescomposer depends)或 WhyPackage

🔍 相关方法

基于 MIT 许可证发布