Skip to main content
To add a particular package:
terminal
To specify a version, version range, or tag:
terminal

--dev

Alias--development, -d, -D
To add a package as a dev dependency ("devDependencies"):
terminal

--optional

To add a package as an optional dependency ("optionalDependencies"):
terminal

--peer

To add a package as a peer dependency ("peerDependencies"):
terminal

--exact

Alias-E
To add a package and pin to the resolved version, use --exact. This will resolve the version of the package and add it to your package.json with an exact version number instead of a version range.
terminal
This will add the following to your package.json:
package.json
To view a complete list of options for this command:
terminal

--global

Note — This would not modify package.json of your current project folder. Alias - bun add --global, bun add -g, bun install --global and bun install -g
To install a package globally, use the -g/--global flag. This will not modify the package.json of your current project. Typically this is used for installing command-line tools.
terminal
bunfig.toml

Trusted dependencies

Unlike other npm clients, Bun does not execute arbitrary lifecycle scripts for installed dependencies, such as postinstall. These scripts represent a potential security risk, as they can execute arbitrary code on your machine. To tell Bun to allow lifecycle scripts for a particular package, add the package to trustedDependencies in your package.json.
package.json
Bun reads this field and will run lifecycle scripts for my-trusted-package.

Git dependencies

To add a dependency from a public or private git repository:
terminal
To install private repositories, your system needs the appropriate SSH credentials to access the repository.
Bun supports a variety of protocols, including github, git, git+ssh, git+https, and many more.
package.json

Tarball dependencies

A package name can correspond to a publicly hosted .tgz file. During installation, Bun will download and install the package from the specified tarball URL, rather than from the package registry.
terminal
This will add the following line to your package.json:
package.json

CLI Usage

Dependency Management

boolean
Don’t install devDependencies. Alias: -p
string
Exclude dev, optional, or peer dependencies from install
boolean
Install globally. Alias: -g
boolean
Add dependency to devDependencies. Alias: -d
boolean
Add dependency to optionalDependencies
boolean
Add dependency to peerDependencies
boolean
Add the exact version instead of the ^ range. Alias: -E
boolean
Only add dependencies to package.json if they are not already present

Project Files & Lockfiles

boolean
Write a yarn.lock file (yarn v1). Alias: -y
boolean
Don’t update package.json or save a lockfile
boolean
default:"true"
Save to package.json (true by default)
boolean
Disallow changes to lockfile
boolean
Add to trustedDependencies in the project’s package.json and install the package(s)
boolean
Save a text-based lockfile
boolean
Generate a lockfile without installing dependencies

Installation Control

boolean
Don’t install anything
boolean
Always request the latest versions from the registry & reinstall all dependencies. Alias: -f
boolean
Skip verifying integrity of newly downloaded packages
boolean
Skip lifecycle scripts in the project’s package.json (dependency scripts are never run)
boolean
Recursively analyze & install dependencies of files passed as arguments (using Bun’s bundler). Alias: -a

Network & Registry

string
Provide a Certificate Authority signing certificate
string
Same as —ca, but as a file path to the certificate
string
Use a specific registry by default, overriding .npmrc, bunfig.toml, and environment variables
number
default:"48"
Maximum number of concurrent network requests (default 48)

Performance & Resource

string
default:"clonefile"
Platform-specific optimizations for installing dependencies. Possible values: clonefile (default), hardlink, symlink, copyfile
number
default:"5"
Maximum number of concurrent jobs for lifecycle scripts (default 5)

Caching

string
Store & load cached data from a specific directory path
boolean
Ignore manifest cache entirely

Output & Logging

boolean
Don’t log anything
boolean
Excessively verbose logging
boolean
Disable the progress bar
boolean
Don’t print a summary

Global Configuration & Context

string
Specify path to config file (bunfig.toml). Alias: -c
string
Set a specific current working directory

Help

boolean
Print this help menu. Alias: -h