Skip to content

🌳 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

ParameterTypeDescription
packageNamestringName of the package whose dependency tree to display; pass an empty string to display the entire project's dependency tree

Return value

ValueTypeDescription
OutputstringText output of the dependency tree
ErrorerrorReturned 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.

Released under the MIT License