🌳 ShowDependencyTree
Displays package dependencies as a tree. Equivalent to composer show --tree [package/name].
When to use
- 🧩 Figure out which transitive dependencies a package indirectly pulls in.
- 🐛 Trace dependency chains when troubleshooting version conflicts.
- 📊 Generate dependency reports.
Signature
go
func (c *Composer) ShowDependencyTree(packageName string) (string, error)Parameters
| Parameter | Type | Description |
|---|---|---|
packageName | string | Name of the package whose dependency tree to display; pass an empty string to display the entire project's dependency tree |
Return value
| Value | Type | Description |
|---|---|---|
| Output | string | Text output of the dependency tree |
| Error | error | Returned when an error occurs while fetching the dependency tree |
Example
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("init failed: %v", err)
}
// Show the entire project's dependency tree
output, err := comp.ShowDependencyTree("")
if err != nil {
log.Fatalf("get dependency tree failed: %v", err)
}
fmt.Println("project dependency tree:", output)
// Show the dependency tree of a specific package
output, err = comp.ShowDependencyTree("symfony/console")
if err != nil {
log.Fatalf("get dependency tree failed: %v", err)
}
fmt.Println("package dependency tree:", output)
}Advanced
Structured parsing
parsing.go provides ParseDependencyTreeOutput and ParseDependencyTreeJSON, which parse the tree output into []DependencyNode:
go
type DependencyNode struct {
Name string `json:"name"`
Version string `json:"version,omitempty"`
Children []DependencyNode `json:"children,omitempty"`
}First obtain the JSON with ShowPackageWithFormat(pkg, "json"), then call ParseDependencyTreeJSON to parse it.
Reverse perspective
To find out "who depends on a package", use ShowReverseDependencies (composer depends) or WhyPackage.
🔍 Related methods
ShowPackage: view a single package's information.WhyPackage: explain why a package was installed.