The bun CLI contains a Node.js-compatible package manager designed to be a dramatically faster replacement for npm, yarn, and pnpm. It's a standalone tool that will work in pre-existing Node.js projects; if your project has a package.json, bun install can help you speed up your workflow.
⚡️ 25x faster — Switch from npm install to bun install in any Node.js project to make your installations up to 25x faster.

For Linux users
Manage dependencies
bun install
To install all dependencies of a project:
bun installOn Linux, bun install tends to install packages 20-100x faster than npm install. On macOS, it's more like 4-80x.
Running bun install will:
- Install all
dependencies,devDependencies, andoptionalDependencies. Bun does not installpeerDependenciesby default. - Run your project's
{pre|post}installscripts at the appropriate time. For security reasons Bun does not execute lifecycle scripts of installed dependencies. - Write a
bun.lockblockfile to the project root.
To install in production mode (i.e. without devDependencies):
bun install --productionTo perform a dry run (i.e. don't actually install anything):
bun install --dry-runTo modify logging verbosity:
bun install --verbose # debug loggingbun install --silent # no loggingConfiguring behavior
bun add
To add a particular package:
bun add preactTo specify a version, version range, or tag:
bun add zod@3.20.0bun add zod@^3.0.0bun add zod@latestTo add a package as a dev dependency ("devDependencies"):
bun add --development @types/reactbun add -d @types/reactTo add a package as an optional dependency ("optionalDependencies"):
bun add --optional lodashTo install a package globally:
bun add --global cowsay # or `bun add -g cowsay`cowsay "Bun!" ______
< Bun! >
------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||Configuring global installation behavior
To view a complete list of options for a given command:
bun add --helpbun remove
To remove a dependency:
bun remove preactLocal packages (bun link)
Use bun link in a local directory to register the current package as a "linkable" package.
cd /path/to/cool-pkgcat package.json{
"name": "cool-pkg",
"version": "1.0.0"
}bun linkbun link v0.5.7 (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.
cd /path/to/my-appbun link cool-pkgIn 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:
{
"name": "my-app",
"version": "1.0.0",
"dependencies": {
"cool-pkg": "link:cool-pkg"
}
}Git dependencies
To add a dependency from a git repository:
bun install git@github.com:moment/moment.gitBun supports a variety of protocols, including github, git, git+ssh, git+https, and many more.
{
"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 publically hosted .tgz file. During bun install, Bun will download and install the package from the specified tarball URL, rather than from the package registry.
{
"dependencies": {
"zod": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz"
}
}
CI/CD
Looking to speed up your CI? Use the official oven-sh/setup-bun action to install bun in a GitHub Actions pipeline.
name: bun-types
jobs:
build:
name: build-app
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Install bun
uses: oven-sh/setup-bun@v1
- name: Install dependencies
run: bun install
- name: Build app
run: bun run build