Bun

bun why

The bun why command explains why a package is installed in your project by showing the dependency chain that led to its installation.

Usage

bun why <package>

Arguments

  • <package>: The name of the package to explain. Supports glob patterns like @org/* or *-lodash.

Options

  • --top: Show only the top-level dependencies instead of the complete dependency tree.
  • --depth <number>: Maximum depth of the dependency tree to display.

Examples

Check why a specific package is installed:

bun why react
[email protected]
  └─ [email protected] (requires ^18.0.0)

Check why all packages with a specific pattern are installed:

bun why "@types/*"
@types/[email protected]
  └─ dev [email protected] (requires ^18.0.0)

@types/[email protected]
  └─ dev [email protected] (requires ^18.0.0)

Show only top-level dependencies:

bun why express --top
[email protected]
  └─ [email protected] (requires ^4.18.2)

Limit the dependency tree depth:

bun why express --depth 2
[email protected]
  └─ [email protected] (requires ^4.18.2)
     └─ [email protected] (requires ^1.20.1)
     └─ [email protected] (requires ^1.3.8)
        └─ (deeper dependencies hidden)

Understanding the Output

The output shows:

  • The package name and version being queried
  • The dependency chain that led to its installation
  • The type of dependency (dev, peer, optional, or production)
  • The version requirement specified in each package's dependencies

For nested dependencies, the command shows the complete dependency tree by default, with indentation indicating the relationship hierarchy.