Bun包管理器 BunPackageManager

Bun包管理器是一个高效的依赖管理工具,用于JavaScript项目中的包安装、添加、移除和更新,支持工作空间管理、锁文件生成,以及从npm、yarn、pnpm迁移,提升开发效率和安全性。关键词:依赖管理、包管理器、Bun、JavaScript、DevOps。

DevOps 0 次安装 0 次浏览 更新于 3/8/2026

名称: Bun包管理器 描述: Bun包管理器命令(安装、添加、移除、更新)、工作空间、锁文件、npm/yarn/pnpm迁移。用于Bun的依赖管理。

Bun包管理器

Bun的包管理器是一个显著的更快替代npm、yarn和pnpm的工具。比npm install快多达25倍

快速开始

# 安装所有依赖
bun install

# 添加包
bun add react react-dom
bun add -D typescript @types/react

# 移除包
bun remove lodash

# 更新包
bun update

# 运行包二进制文件
bunx create-next-app

核心命令

命令 描述
bun install 安装所有依赖
bun add <pkg> 添加依赖
bun add -D <pkg> 添加开发依赖
bun add -O <pkg> 添加可选依赖
bun add --peer <pkg> 添加对等依赖
bun remove <pkg> 移除依赖
bun update [pkg] 更新依赖
bunx <pkg> 运行包二进制文件
bun pm cache rm 清除缓存

安装标志

# 生产模式(无开发依赖)
bun install --production

# 冻结锁文件(CI/CD)
bun install --frozen-lockfile
bun ci  # 简写

# 干运行
bun install --dry-run

# 详细/静默
bun install --verbose
bun install --silent

# 强制重新安装
bun install --force

# 全局包
bun install -g cowsay

锁文件

Bun使用bun.lock(自v1.2起为文本格式):

# 生成文本锁文件
bun install --save-text-lockfile

# 从二进制bun.lockb升级
bun install --save-text-lockfile --frozen-lockfile --lockfile-only
rm bun.lockb

工作空间(单仓库)

{
  "name": "my-monorepo",
  "workspaces": ["packages/*", "apps/*"]
}

在工作空间中运行命令:

# 在匹配的包中运行
bun run --filter 'pkg-*' build

# 在所有工作空间中运行
bun run --filter '*' test

# 为特定包安装
bun install --filter 'pkg-a'

生命周期脚本

Bun默认运行来自依赖的生命周期脚本(安全考虑)。白名单信任包:

{
  "trustedDependencies": ["my-trusted-package"]
}
# 跳过所有生命周期脚本
bun install --ignore-scripts

# 并发脚本
bun install --concurrent-scripts 5

覆盖和解析

强制嵌套依赖的特定版本:

{
  "overrides": {
    "lodash": "4.17.21"
  }
}

也支持Yarn风格的解析:

{
  "resolutions": {
    "lodash": "4.17.21"
  }
}

非npm依赖

{
  "dependencies": {
    "dayjs": "git+https://github.com/iamkun/dayjs.git",
    "lodash": "git+ssh://github.com/lodash/lodash.git#4.17.21",
    "zod": "github:colinhacks/zod",
    "react": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
    "bun-types": "npm:@types/bun"
  }
}

安装策略

提升式(单包默认)

传统的扁平node_modules:

bun install --linker hoisted

隔离式(工作空间默认)

类pnpm的严格隔离:

bun install --linker isolated

隔离防止“幽灵依赖”——包只能访问声明的依赖。

CI/CD

# GitHub Actions
- uses: oven-sh/setup-bun@v2
- run: bun ci  # 冻结锁文件

平台特定

# 为不同平台安装
bun install --cpu=x64 --os=linux

常见错误

错误 原因 修复
Cannot find module 缺少依赖 运行bun install
Lockfile mismatch package.json更改 运行bun install
Peer dependency 缺少对等依赖 bun add添加对等依赖
Lifecycle script failed 非信任包 添加到trustedDependencies

从其他包管理器迁移

从pnpm

Bun自动迁移pnpm-lock.yaml

bun install  # 自动转换为bun.lock

工作空间配置移至package.json:

{
  "workspaces": {
    "packages": ["apps/*", "packages/*"],
    "catalog": {
      "react": "^18.0.0"
    }
  }
}

从npm/Yarn

只需运行bun install - Bun读取package-lock.jsonyarn.lock

何时加载参考

加载references/cli-commands.md当:

  • 需要完整CLI标志参考
  • 使用高级选项时

加载references/workspaces.md当:

  • 设置单仓库时
  • 配置工作空间过滤器时

加载references/migration.md当:

  • 从npm/yarn/pnpm迁移时
  • 转换锁文件时