Bun

bun install

bun CLI 包含一个与 Node.js 兼容的包管理器,旨在作为 npmyarnpnpm 的速度极快的替代品。这是一个独立的工具,可以在已有的 Node.js 项目中工作;如果你的项目有 package.jsonbun install 可以帮助你加速你的工作流程。

⚡️ 快 25 倍 — 在任何 Node.js 项目中从 npm install 切换到 bun install,让你的安装速度提升至 25 倍。

适用于 Linux 用户

要安装项目的全部依赖项

bun install

运行 bun install

  • 安装全部 dependenciesdevDependenciesoptionalDependencies。Bun 将默认安装 peerDependencies
  • 运行项目的 {pre|post}install{pre|post}prepare 脚本(在适当的时候)。出于安全原因,Bun 不会执行 已安装依赖项的生命周期脚本。
  • 写入一个 bun.lockb 锁定文件到项目根目录。

日志记录

要修改日志记录详细程度

bun install --verbose # debug logging
bun install --silent  # no logging

生命周期脚本

与其他 npm 客户端不同,Bun 不会执行已安装依赖项的任意生命周期脚本,例如 postinstall。执行任意脚本会带来潜在的安全风险。

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

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

然后重新安装该包。Bun 将读取此字段并运行 my-trusted-package 的生命周期脚本。

生命周期脚本将在安装期间并行运行。要调整并发脚本的最大数量,请使用 --concurrent-scripts 标志。默认值为报告的 CPU 计数或 GOMAXPROCS 的两倍。

bun install --concurrent-scripts 5

工作区

Bun 支持 package.json 中的 "workspaces"。有关完整文档,请参阅 包管理器 > 工作区

package.json
{
  "name": "my-app",
  "version": "1.0.0",
  "workspaces": ["packages/*"],
  "dependencies": {
    "preact": "^10.5.13"
  }
}

覆盖和解析

Bun 支持 package.json 中 npm 的 "overrides" 和 Yarn 的 "resolutions"。这些是指定元依赖项(依赖项的依赖项)版本范围的机制。有关完整文档,请参阅 包管理器 > 覆盖和解析

package.json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  },
  "overrides": {
    "bar": "~4.4.0"
  }
}

全局包

要全局安装包,请使用 -g/--global 标志。通常用于安装命令行工具。

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

生产模式

要在生产模式下安装(即不带 devDependenciesoptionalDependencies

bun install --production

对于可重复安装,请使用 --frozen-lockfile。这将安装锁定文件中指定的每个包的精确版本。如果你的 package.jsonbun.lockb 不一致,Bun 将退出并显示错误。锁定文件不会更新。

bun install --frozen-lockfile

有关 Bun 的二进制锁定文件 bun.lockb 的更多信息,请参阅 包管理器 > 锁定文件

试运行

要执行试运行(即实际上不安装任何内容)

bun install --dry-run

非 npm 依赖项

Bun 支持从 Git、GitHub 以及本地或远程托管的 tarball 安装依赖项。有关完整文档,请参阅 包管理器 > Git、GitHub 和 tarball 依赖项

package.json
{
  "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",
    "react": "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
  }
}

配置

bun install 的默认行为可以在 bunfig.toml 中配置。默认值如下所示。

[install]

# whether to install optionalDependencies
optional = true

# whether to install devDependencies
dev = true

# whether to install peerDependencies
peer = true

# equivalent to `--production` flag
production = false

# equivalent to `--frozen-lockfile` flag
frozenLockfile = false

# equivalent to `--dry-run` flag
dryRun = false

# equivalent to `--concurrent-scripts` flag
concurrentScripts = 16 # (cpu count or GOMAXPROCS) x2

CI/CD

希望加快你的 CI?使用官方 oven-sh/setup-bun 操作在 GitHub Actions 流水线中安装 bun

.github/workflows/release.yml
name: bun-types
jobs:
  build:
    name: build-app
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
      - name: Install bun
        uses: oven-sh/setup-bun@v1
      - name: Install dependencies
        run: bun install
      - name: Build app
        run: bun run build