where bun add --global installs packages
globalDir = "~/.bun/install/global"
where globally-installed package bins are linked
globalBinDir = "~/.bun/bin"
## 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
{ "name": "my-app", "version": "1.0.0", "trustedDependencies": ["my-trusted-package"] }
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
bun add git@github.com:moment/moment.git
Bun supports a variety of protocols, including [`github`](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#github-urls), [`git`](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#git-urls-as-dependencies), `git+ssh`, `git+https`, and many more.
package.json
{ "dependencies": { "dayjs": "git+https://github.com/iamkun/dayjs.git", "lodash": "git+ssh://github.com/lodash/lodash.git#4.17.21", "moment": "git@github.com:moment/moment.git", "zod": "github:colinhacks/zod" } }
## 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
bun add zod@https://registry.npmjs.org/zod/-/zod-3.21.4.tgz
This will add the following line to your `package.json`:
package.json
{ "dependencies": { "zod": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz" } }
* * *
## CLI Usage
bun add <package> <@version>
### Dependency Management
\--production
boolean
Don’t install devDependencies. Alias: `-p`
\--omit
string
Exclude `dev`, `optional`, or `peer` dependencies from install
\--global
boolean
Install globally. Alias: `-g`
\--dev
boolean
Add dependency to `devDependencies`. Alias: `-d`
\--optional
boolean
Add dependency to `optionalDependencies`
\--peer
boolean
Add dependency to `peerDependencies`
\--exact
boolean
Add the exact version instead of the `^` range. Alias: `-E`
\--only-missing
boolean
Only add dependencies to `package.json` if they are not already present
### Project Files & Lockfiles
\--yarn
boolean
Write a `yarn.lock` file (yarn v1). Alias: `-y`
\--no-save
boolean
Don’t update `package.json` or save a lockfile
\--save
boolean
default:"true"
Save to `package.json` (true by default)
\--frozen-lockfile
boolean
Disallow changes to lockfile
\--trust
boolean
Add to `trustedDependencies` in the project’s `package.json` and install the package(s)
\--save-text-lockfile
boolean
Save a text-based lockfile
\--lockfile-only
boolean
Generate a lockfile without installing dependencies
### Installation Control
\--dry-run
boolean
Don’t install anything
\--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
\--ignore-scripts
boolean
Skip lifecycle scripts in the project’s `package.json` (dependency scripts are never run)
\--analyze
boolean
Recursively analyze & install dependencies of files passed as arguments (using Bun’s bundler). Alias: `-a`
### 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 (default 48)
### Performance & Resource
\--backend
string
default:"clonefile"
Platform-specific optimizations for installing dependencies. Possible values: `clonefile` (default), `hardlink`, `symlink`, `copyfile`
\--concurrent-scripts
number
default:"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
\--verbose
boolean
Excessively verbose logging
\--no-progress
boolean
Disable the progress bar
\--no-summary
boolean
Don’t print a summary
### 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`