🌳 ShowDependencyTree
以树形结构显示包的依赖关系,等价于 composer show --tree [package/name]。
何时使用
- 🧩 理清某个包间接引入了哪些传递依赖。
- 🐛 排查版本冲突时梳理依赖链路。
- 📊 生成依赖关系报告。
签名
go
func (c *Composer) ShowDependencyTree(packageName string) (string, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
packageName | string | 要显示依赖树的包名;传空字符串则显示整个项目的依赖树 |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 输出 | 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 提供了 ParseDependencyTreeOutput 与 ParseDependencyTreeJSON,可将树形输出解析为 []DependencyNode:
go
type DependencyNode struct {
Name string `json:"name"`
Version string `json:"version,omitempty"`
Children []DependencyNode `json:"children,omitempty"`
}先用 ShowPackageWithFormat(pkg, "json") 拿 JSON,再调用 ParseDependencyTreeJSON 解析。
反向视角
想知道「谁依赖了某个包」用 ShowReverseDependencies(composer depends)或 WhyPackage。
🔍 相关方法
ShowPackage:查看单个包信息。WhyPackage:解释为何安装了某包。