Use bun link in a local directory to register the current package as a "linkable" package.
cd /path/to/cool-pkg
cat package.json
bun link
bun link v1.3.3 (7416672e)
Success! Registered "cool-pkg"
To use cool-pkg in a project, run:
bun link cool-pkg
Or add it in dependencies in your package.json file:
"cool-pkg": "link:cool-pkg"
You can now "link" this package into other projects using bun link cool-pkg. This command creates a symlink in the target project's node_modules directory pointing to the local directory.
cd /path/to/my-app
bun link cool-pkg
The --save flag also adds cool-pkg to the dependencies field of your app's package.json, with a version specifier that tells Bun to load from the registered local directory instead of installing from npm:
{
"name": "my-app",
"version": "1.0.0",
"dependencies": {
"cool-pkg": "link:cool-pkg" // [!code ++]
}
}
Unlinking
Use bun unlink in the root directory to unregister a local package.
cd /path/to/cool-pkg
bun unlink
bun unlink v1.3.3 (7416672e)
success: unlinked package "cool-pkg"
CLI Usage
bun link <packages>
Installation Scope
--global boolean
Install globally. Alias: -g
Dependency Management
--production boolean
Don't install devDependencies. Alias: -p
--omit string
Exclude dev, optional, or peer dependencies from install
Project Files & Lockfiles
--yarn boolean
Write a yarn.lock file (yarn v1). Alias: -y
--frozen-lockfile boolean
Disallow changes to lockfile
--save-text-lockfile boolean
Save a text-based lockfile
--lockfile-only boolean
Generate a lockfile without installing dependencies
--no-save boolean
Has no effect. bun link updates package.json and the lockfile only with --save
--save boolean
Save to package.json
--trust boolean
Add to trustedDependencies in the project's package.json and install the package(s)
Installation Control
--force boolean
Always request the latest versions from the registry & reinstall all dependencies. Alias: -f
--no-verify boolean
Skip verifying integrity of newly downloaded packages
--backend string
Platform-specific optimizations for installing dependencies. One of clonefile, hardlink,{" "}
symlink, or copyfile
--linker string
Linker strategy (one of isolated or hoisted)
--dry-run boolean
With bun link <package>, resolve but don't install packages, update package.json, or
save a lockfile. Has no effect on bare bun link, which still registers the current package
--ignore-scripts boolean
Skip lifecycle scripts for all packages, including the project's package.json and trusted dependencies
Network & Registry
--ca string
Provide a Certificate Authority signing certificate
--cafile string
Same as --ca, but as a file path to the certificate
--registry string
Use a specific registry by default, overriding .npmrc, bunfig.toml, and environment
variables
--network-concurrency number default: 48
Maximum number of concurrent network requests
Performance & Resource
--concurrent-scripts number
Maximum number of concurrent jobs for lifecycle scripts (default: 2x CPU cores)
Caching
--cache-dir string
Store & load cached data from a specific directory path
--no-cache boolean
Ignore manifest cache entirely
Output & Logging
--silent boolean
Don't log anything
--quiet boolean
Disable the progress bar
--verbose boolean
Excessively verbose logging
--no-progress boolean
Disable the progress bar
--no-summary boolean
Don't print a summary
Platform Targeting
--cpu string
Override CPU architecture for optional dependencies (e.g., x64, arm64, * for
all)
--os string
Override operating system for optional dependencies (e.g., linux, darwin, * for
all)
Global Configuration & Context
--config string
Specify path to config file (bunfig.toml). Alias: -c
--cwd string
Set a specific current working directory
Help
--help boolean
Print this help menu. Alias: -h