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
lodash with version 4.17.21.
Nested overrides
Override dependencies of specific packages:bar only when it’s a dependency of foo.
Deep nested overrides
baz only when it’s: foo → bar → baz
Use cases
Security patches
Force a security patch for a transitive dependency: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:Replace unmaintained packages
Syntax
Exact version
Version range
Package alias
All versions
Reference parent version
dependencies.
Scoped overrides
Override for specific parent
lodash only when it’s a dependency of package-a.
Multiple levels
lodash only in the chain: package-a → package-b → lodash
Wildcard parent
Examples
Security fix
Deduplicate React versions
Fix peer dependency conflicts
Replace deprecated package
request now use node-fetch.
Comparison with resolutions
Yarn resolutions
Yarn usesresolutions field:
overrides and resolutions for compatibility.
npm overrides
Bun’soverrides syntax is compatible with npm 8.3+:
pnpm overrides
pnpm usespnpm.overrides:
pnpm.overrides when migrating from pnpm.
Verification
Check overrides are applied
After installing:View dependency tree
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:- Package name - Must match exactly
- Version exists - Verify version exists in registry
- 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
Related features
Catalogs
For managing shared versions across workspaces, see catalogs.Patches
For patching package code, seebun patch command.
Resolutions
Bun supports Yarn’sresolutions field for compatibility: