Skip to main content
添加特定包:
terminal
指定版本、版本范围或标签:
terminal
除非指定了 --dev--optional--peer,否则包会写入 dependencies。如果 package.json 已经在其他分组中列出了该包,则会在原位置更新该条目。

--dev

别名--development-d-D
将包作为开发依赖("devDependencies")添加:
terminal

--optional

将包作为可选依赖("optionalDependencies")添加:
terminal

--peer

将包作为对等依赖("peerDependencies")添加:
terminal
Bun 默认会安装对等依赖,因此不需要额外的 devDependencies 条目。

--exact

别名-E
要将软件包固定为已解析的版本,请使用 --exact。Bun 会将确切的版本号写入 package.json,而不是版本范围。
terminal
package.json 中的区别:
package.json
查看此命令的完整选项列表:
terminal

--catalog

在工作区中,--catalog 会将版本写入根目录的 package.json catalog,并将 "catalog:" 添加到当前包。--catalog=<name> 使用命名目录(workspaces.catalogs.<name>),并写入 "catalog:<name>"
terminal
package.json
packages/app/package.json
  • 如果目录中已经存在条目,则会复用该条目,并且只将 "catalog:" 写入当前包。传入显式版本(bun add react@19 --catalog)可替换该条目——这会影响所有引用它的包
  • 如果未指定版本,则会将当前 package.json 中已有的范围("react": "^18.2.0")加入目录
  • 已经引用 "catalog:<name>" 的包会继续使用该目录
  • 名称必须使用 = 连接:--catalog=testing,而不是 --catalog testing
  • Tarball 和 git 说明符会以包的实际名称加入目录。相对路径和工作区包会被拒绝
即使没有该标志,如果默认目录中已经列出了 reactbun add react(不带版本)也会写入 "catalog:"。传入版本则会写入具体范围。

--filter

别名-F
在 monorepo 中,将包添加到匹配的工作区,而不是当前目录的包中。有关模式语法,请参阅筛选。重复该标志可组合多个模式;!pattern 用于排除。
terminal
  • * 匹配每个工作区包,但不匹配根目录。要包含根目录,请指定其名称:--filter '*' --filter '<root-name>'
  • 如果没有工作区匹配,则不会写入任何内容,并且命令会失败
  • 本地路径从当前目录解析,并重写为相对于每个选定包的路径
  • bun.lock 会为整个仓库更新,但只有选定的工作区会链接到 node_modules,与 bun install --filter 一样
  • 不能与 --global 组合使用

--global

别名bun add --globalbun add -gbun install --globalbun install -g
要全局安装软件包,请使用 -g/--global 标志。这不会修改当前项目的 package.json。使用它来安装命令行工具。
terminal
bunfig.toml

受信任的依赖

与其它 npm 客户端不同,Bun 不会执行已安装依赖的任意生命周期脚本,如 postinstall。这些脚本存在安全风险,可能在您的机器上执行任意代码。 要让 Bun 允许特定包的生命周期脚本,请在您的 package.json 中将该包添加到 trustedDependencies
package.json
Bun 会读取此字段,并运行 my-trusted-package 的生命周期脚本。

Git 依赖

添加来自公共或私有 Git 仓库的依赖:
terminal
安装私有仓库时,系统需具备相应的 SSH 凭据以访问该仓库。
Bun 支持多种协议,包括 githubgitgit+sshgit+https
package.json

Tarball 依赖

包名可以对应一个公开托管的 .tgz 文件。Bun 会从该 tarball URL 下载并安装包,而不是从包注册表安装。
terminal
bun add 会将 URL 写入你的 package.json
package.json

CLI 使用方法

依赖管理

boolean
不安装 devDependencies。别名:-p
string
安装时排除 devoptionalpeer 依赖
boolean
全局安装。别名:-g
boolean
添加依赖到 devDependencies。别名:-d
boolean
添加依赖到 optionalDependencies
boolean
添加依赖到 peerDependencies
boolean
添加精确版本,而非 ^ 范围。别名:-E
boolean
仅在 package.json 中不存在该依赖时才添加
string
将解析后的版本添加到根目录 package.json 的 catalog 中,并以 catalog: 的形式依赖它; —catalog=NAME 指向 catalogs.NAME
string
将软件包添加到匹配的工作区,而不是当前软件包。别名:-F

项目文件与锁文件

boolean
生成 yarn.lock 文件(yarn v1)。别名:-y
boolean
不更新 package.json 或保存锁文件
boolean
default:"true"
保存到 package.json
boolean
不允许修改锁文件
boolean
将依赖添加到项目 package.jsontrustedDependencies 并安装该包
boolean
保存为文本格式的锁文件
boolean
仅生成锁文件,不安装依赖

安装控制

boolean
不执行实际安装
boolean
总是从注册表请求最新版本并重新安装所有依赖。别名:-f
boolean
跳过新下载包的完整性校验
boolean
跳过项目 package.json 中的生命周期脚本(依赖的脚本永远不会执行)
boolean
递归分析并安装作为参数传入文件的依赖(使用 Bun 的打包器)。别名:-a

网络与注册表

string
提供证书颁发机构签名证书
string
—ca 相同,但通过证书文件路径提供
string
默认使用指定注册表,覆盖 .npmrcbunfig.toml 和环境变量
number
default:"48"
最大并发网络请求数

性能与资源

string
default:"clonefile"
用于安装依赖的平台特定优化方式。可选值为 clonefilehardlink symlinkcopyfile
number
生命周期脚本的最大并发任务数(默认值:CPU 核心数的 2 倍)

缓存

string
从指定目录路径存储和加载缓存数据
boolean
完全忽略清单缓存

输出与日志

boolean
不输出任何日志
boolean
输出超详细日志
boolean
关闭进度条
boolean
不打印总结信息

全局配置与上下文

string
指定配置文件路径(bunfig.toml)。别名:-c
string
设置当前工作目录

帮助

boolean
显示此帮助菜单。别名:-h