Runtime
Bundler
Package Manager
Test Runner
Guides
Reference
Blog
Install Bun
Package Manager Workspace Management

bun link

Link local packages for development

Use bun link in a local directory to register the current package as a "linkable" package.

terminal
$ cd /path/to/cool-pkg
$ cat package.json
$ bun link

bun link v1.3.5 (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"

This package can now be "linked" into other projects using bun link cool-pkg. This will create a symlink in the node_modules directory of the target project, pointing to the local directory.

terminal
$ cd /path/to/my-app
$ bun link cool-pkg

In addition, the --save flag can be used to add cool-pkg to the dependencies field of your app's package.json with a special version specifier that tells Bun to load from the registered local directory instead of installing from npm:

package.json
{
  "name": "my-app",
  "version": "1.0.0",
  "dependencies": {
    "cool-pkg": "link:cool-pkg"
  }
}

Unlinking

Use bun unlink in the root directory to unregister a local package.

terminal
$ cd /path/to/cool-pkg
$ bun unlink

bun unlink v1.3.5 (7416672e)

CLI Usage

terminal
$ 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

Don't update package.json or save a lockfile

--save
booleandefault: true

Save to package.json (true by default)

--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
stringdefault: clonefile

Platform-specific optimizations for installing dependencies. Possible values: clonefile (default), hardlink, symlink, copyfile

--linker
string

Linker strategy (one of isolated or hoisted)

--dry-run
boolean

Don't install anything

--ignore-scripts
boolean

Skip lifecycle scripts in the project's package.json (dependency scripts are never run)

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
numberdefault: 48

Maximum number of concurrent network requests (default 48)

Performance & Resource

--concurrent-scripts
numberdefault: 5

Maximum number of concurrent jobs for lifecycle scripts (default 5)

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

Only show tarball name when packing

--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