Bun

bun add

要添加特定的包

bun add preact

要指定版本、版本范围或标签

bun add zod@3.20.0
bun add zod@^3.0.0
bun add zod@latest

--dev

别名--development, -d, -D

将包添加为开发依赖项("devDependencies"

bun add --dev @types/react
bun add -d @types/react

--optional

将包添加为可选依赖项("optionalDependencies"

bun add --optional lodash

--peer

将包添加为对等依赖项("peerDependencies"

bun add --peer @types/bun

--exact

别名-E

要添加一个包并固定到解析后的版本,请使用 --exact。这将解析包的版本并将其添加到您的 package.json 中,使用精确版本号而不是版本范围。

bun add react --exact
bun add react -E

这将在您的 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
  },
}

要查看此命令的完整选项列表

bun add --help

--global

注意 — 这不会修改当前项目文件夹的 package.json。 别名 - bun add --global, bun add -g, bun install --globalbun install -g

要全局安装一个包,请使用 -g/--global 标志。这不会修改当前项目的 package.json。通常用于安装命令行工具。

bun add --global cowsay # or `bun add -g cowsay`
cowsay "Bun!"
 ______
< Bun! >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

配置全局安装行为

受信任的依赖项

与其他 npm 客户端不同,Bun 不会为已安装的依赖项执行任意的生命周期脚本,例如 postinstall。这些脚本存在潜在的安全风险,因为它们可以在您的计算机上执行任意代码。

要告诉 Bun 允许特定包的生命周期脚本,请在您的 package.json 中将该包添加到 trustedDependencies

{
  "name": "my-app",
  "version": "1.0.0",
  "trustedDependencies": ["my-trusted-package"]
}

Bun 会读取此字段,并将为 my-trusted-package 运行生命周期脚本。

Git 依赖项

从公共或私有 git 仓库添加依赖项

bun add git@github.com:moment/moment.git

注意 — 要安装私有仓库,您的系统需要有适当的 SSH 凭据来访问该仓库。

Bun 支持多种协议,包括 githubgitgit+sshgit+https 等等。

{
  "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 依赖项

包名可以对应一个公开托管的 .tgz 文件。在安装过程中,Bun 将从指定的 tarball URL 下载并安装该包,而不是从包注册表中获取。

bun add zod@https://registry.npmjs.org/zod/-/zod-3.21.4.tgz

这将在您的 package.json 中添加以下行

package.json
{
  "dependencies": {
    "zod": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz"
  }
}

CLI 用法

$bun add <package> <@version>

Flags

依赖类型与范围

-p,--production
不安装 devDependencies
--omit=<val>
从安装中排除 'dev'、'optional' 或 'peer' 依赖项
-d,--dev
将依赖项添加到 "devDependencies"
--optional
将依赖项添加到 "optionalDependencies"
--peer
将依赖项添加到 "peerDependencies"
-E,--exact
添加精确版本而不是 ^ 范围

项目文件更新

-y,--yarn
写入 yarn.lock 文件 (yarn v1)
--no-save
不更新 package.json 或保存锁定文件
--save
保存到 package.json(默认为 true)
--trust
添加到项目 package.json 中的 trustedDependencies 并安装包。
--save-text-lockfile
保存基于文本的锁定文件
--only-missing
仅当依赖项不存在时才添加到 package.json

安装过程控制

--dry-run
不安装任何东西
--frozen-lockfile
不允许修改锁定文件
-f,--force
始终从注册表请求最新版本并重新安装所有依赖项
--no-verify
跳过验证新下载包的完整性
--ignore-scripts
跳过项目 package.json 中的生命周期脚本(依赖项脚本永远不会运行)
-g,--global
全局安装
--lockfile-only
生成锁定文件而不安装依赖项
-a,--analyze
递归分析并安装参数传递文件的依赖项(使用 Bun 的打包器)

安装优化与策略

--backend=<val>
用于安装依赖项的特定于平台的优化。可能的值:“clonefile”(默认值)、“hardlink”、“symlink”、“copyfile”。
--concurrent-scripts=<val>
生命周期脚本的最大并发作业数(默认 5)
--network-concurrency=<val>
最大并发网络请求数(默认 48)
--linker=<val>
链接器策略(“isolated”或“hoisted”之一)

Network & Registry

--ca=<val>
提供一个证书颁发机构签名证书。
--cafile=<val>
与 `--ca` 相同,但指向证书的文件路径。
--registry=<val>
默认使用特定的注册表,覆盖 .npmrc、bunfig.toml 和环境变量。

Caching

--cache-dir=<val>
从特定目录路径存储和加载缓存数据。
--no-cache
完全忽略清单缓存。

Output & Logging

--silent
不记录任何内容。
--quiet
打包时仅显示 tarball 名称。
--verbose
非常详细的日志记录。
--no-progress
禁用进度条。
--no-summary
不打印摘要。

环境与平台

-c,--config=<val>
指定配置文件路径 (bunfig.toml)
--cwd=<val>
设置特定的 cwd
--cpu=<val>
为可选依赖项覆盖 CPU 架构(例如,x64、arm64、* 表示所有)。
--os=<val>
为可选依赖项覆盖操作系统(例如,linux、darwin、* 表示所有)。

通用

-h,--help
打印此帮助菜单

Examples

从 npm 注册表添加依赖项
bun add zod
bun add zod@next
添加开发、可选或对等依赖项
bun add -d typescript
bun add --optional lodash
完整文档可在 https://bun.net.cn/docs/cli/add 找到。