skills/bun-pm-cli-add/SKILL.md
Add packages to your project with Bun's fast package manager
npx skillsauth add jarle/bun-skills Bun bun addInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Add packages to your project with Bun's fast package manager
To add a particular package:
bun add preact
To specify a version, version range, or tag:
bun add [email protected]
bun add zod@^3.0.0
bun add zod@latest
--dev<Note>Alias — --development, -d, -D</Note>
To add a package as a dev dependency ("devDependencies"):
bun add --dev @types/react
bun add -d @types/react
--optionalTo add a package as an optional dependency ("optionalDependencies"):
bun add --optional lodash
--peerTo add a package as a peer dependency ("peerDependencies"):
bun add --peer @types/bun
--exact<Note>Alias — -E</Note>
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.
bun add react --exact
bun add react -E
This will add the following to your package.json:
{
"dependencies": {
// without --exact
"react": "^18.2.0", // this matches >= 18.2.0 < 19.0.0
// with --exact
"react": "18.2.0" // this matches only 18.2.0 exactly
}
}
To view a complete list of options for this command:
bun add --help
--globalTo 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.
bun add --global cowsay # or `bun add -g cowsay`
cowsay "Bun!"
______
< Bun! >
------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
<Accordion title="Configuring global installation behavior">
```toml bunfig.toml icon="settings" theme={"theme":{"light":"github-light","dark":"dracula"}}
[install]
# where `bun add --global` installs packages
globalDir = "~/.bun/install/global"
globalBinDir = "~/.bun/bin"
</Accordion>
## 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.
```json package.json icon="file-json" theme={"theme":{"light":"github-light","dark":"dracula"}}
{
"name": "my-app",
"version": "1.0.0",
"trustedDependencies": ["my-trusted-package"] // [!code ++]
}
Bun reads this field and will run lifecycle scripts for my-trusted-package.
To add a dependency from a public or private git repository:
bun add [email protected]:moment/moment.git
<Note>
To install private repositories, your system needs the appropriate SSH credentials to access the repository.
</Note>
Bun 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": "[email protected]:moment/moment.git",
"zod": "github:colinhacks/zod"
}
}
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.
bun add zod@https://registry.npmjs.org/zod/-/zod-3.21.4.tgz
This will add the following line to your package.json:
{
"dependencies": {
"zod": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz"
}
}
bun add <package> <@version>
development
Using TypeScript with Bun, including type definitions and compiler options
development
Learn how to write tests using Bun's Jest-compatible API with support for async tests, timeouts, and various test modifiers
testing
Learn how to use snapshot testing in Bun to save and compare output between test runs
testing
Learn about Bun test's runtime integration, environment variables, timeouts, and error handling