Skip to main content
Override package versions in your dependency tree.

What are overrides?

Overrides allow you to replace package versions anywhere in your dependency tree, even if they’re transitive dependencies (dependencies of dependencies).

Configuration

In package.json

This replaces all occurrences of lodash with version 4.17.21.

Nested overrides

Override dependencies of specific packages:
This overrides bar only when it’s a dependency of foo.

Deep nested overrides

Overrides baz only when it’s: foobarbaz

Use cases

Security patches

Force a security patch for a transitive dependency:
Even if some-package depends on an older minimist, Bun installs 1.2.6.

Fix bugs

Override buggy transitive dependencies:

Force specific versions

Ensure consistent versions across dependencies:
Both libraries use React 18.2.0, even if they specify different versions.

Replace unmaintained packages

Syntax

Exact version

Version range

Package alias

All versions

Uses latest version.

Reference parent version

Uses the version specified in dependencies.

Scoped overrides

Override for specific parent

Overrides lodash only when it’s a dependency of package-a.

Multiple levels

Overrides lodash only in the chain: package-apackage-blodash

Wildcard parent

Same as global override.

Examples

Security fix

Install:

Deduplicate React versions

Fix peer dependency conflicts

Replace deprecated package

All dependencies using request now use node-fetch.

Comparison with resolutions

Yarn resolutions

Yarn uses resolutions field:
Bun supports both overrides and resolutions for compatibility.

npm overrides

Bun’s overrides syntax is compatible with npm 8.3+:

pnpm overrides

pnpm uses pnpm.overrides:
Bun reads pnpm.overrides when migrating from pnpm.

Verification

Check overrides are applied

After installing:

View dependency tree

Verify all instances use the override version.

Warnings

Version conflicts

Bun warns about overrides that might break compatibility:

Missing overrides

If an override doesn’t match any packages:

Troubleshooting

Override not applied

Check:
  1. Package name - Must match exactly
  2. Version exists - Verify version exists in registry
  3. Syntax - Validate JSON syntax

Lockfile out of sync

After adding overrides:

Check what was overridden

Best practices

Document overrides

Add comments explaining why:

Be specific

Use scoped overrides when possible:

Test thoroughly

Overrides can break functionality:

Review periodically

Remove overrides when upstream packages update:

Use with caution

Overrides bypass package manager resolution. Only use when necessary.

Advanced patterns

Conditional overrides

Different overrides per environment:

Multiple package versions

Override transitive peer dependencies

Catalogs

For managing shared versions across workspaces, see catalogs.

Patches

For patching package code, see bun patch command.

Resolutions

Bun supports Yarn’s resolutions field for compatibility: