Bun

bun update

要将所有依赖项更新到最新版本

bun update

将特定依赖项更新到最新版本

bun update [package]

--interactive

为了获得更可控的更新体验,请使用 --interactive 标志来选择要更新的包。

bun update --interactive
bun update -i

这将启动一个交互式终端界面,显示所有过期的包及其当前版本和目标版本。然后,您可以选择要更新的包。

交互式界面

界面显示按依赖类型分组的包。

? Select packages to update - Space to toggle, Enter to confirm, a to select all, n to select none, i to invert, l to toggle latest

  dependencies                Current  Target   Latest
    □ react                   17.0.2   18.2.0   18.3.1
    □ lodash                  4.17.20  4.17.21  4.17.21

  devDependencies             Current  Target   Latest
    □ typescript              4.8.0    5.0.0    5.3.3
    □ @types/node             16.11.7  18.0.0   20.11.5

  optionalDependencies        Current  Target   Latest
    □ some-optional-package   1.0.0    1.1.0    1.2.0

Sections

  • 包按部分标题分组:dependenciesdevDependenciespeerDependenciesoptionalDependencies
  • 每个部分显示与包数据对齐的列标题。

Columns

  • Package:包名称(为清晰起见,可能带有 dev peer optional 等后缀)。
  • Current:当前安装的版本。
  • Target:将要安装的版本(遵循 semver 约束)。
  • Latest:最新可用版本。

键盘控件

Selection

  • Space:切换包的选定状态。
  • Enter:确认选定并更新。
  • a/A:选定所有包。
  • n/N:取消选定。
  • i/I:反选。

Navigation

  • ↑/↓ 方向键j/k:移动光标。
  • l/L:在当前包的目标版本和最新版本之间切换。

Exit

  • Ctrl+CCtrl+D:取消更新。

视觉指示器

  • 已选定包(将被更新)。
  • 未选定包。
  • > 当前光标位置。
  • 颜色:红色(主版本)、黄色(次版本)、绿色(补丁版本)的版本更改。
  • 下划线:当前选定的更新目标。

包分组

包按依赖类型分组。

  • dependencies - 常规运行时依赖。
  • devDependencies - 开发依赖。
  • peerDependencies - 对等依赖。
  • optionalDependencies - 可选依赖。

在每个部分中,单个包可能带有额外的后缀( dev peer optional)以提高清晰度。

--recursive

--recursive 标志与 --interactive 一起使用,以更新 monorepo 中所有工作区的依赖项。

bun update --interactive --recursive
bun update -i -r

这将显示一个额外的“Workspace”列,显示每个依赖项所属的工作区。

--latest

默认情况下,bun update 将更新到 package.json 中指定的版本范围的依赖项的最新版本。

要更新到最新版本,无论是否与当前版本范围兼容,请使用 --latest 标志。

bun update --latest

在交互模式下,您可以使用 l 键在目标版本(符合 semver)和最新版本之间切换单个包。

例如,使用以下 package.json

{
  "dependencies": {
    "react": "^17.0.2"
  }
}
  • bun update 将更新到匹配 17.x 的版本。
  • bun update --latest 将更新到匹配 18.x 或更高版本。

CLI 用法

$bun update <name>@<version>

Flags

General Configuration & Help

-c,--config=<val>
指定配置文件路径(bunfig.toml)。
-h,--help
打印此帮助菜单。

Update Strategy & Interaction

--dry-run
不安装任何内容。
-f,--force
始终从注册表中请求最新版本并重新安装所有依赖项。
--latest
将包更新到其最新版本。
-i,--interactive
显示过期的包的交互列表以供选择更新。

Dependency Scope & Handling

-p,--production
不安装 devDependencies。
--omit=<val>
从安装中排除 'dev'、'optional' 或 'peer' 依赖项。
--trust
添加到项目 package.jsontrustedDependencies 并安装包。

Project File Management

-y,--yarn
写入 yarn.lock 文件(yarn v1)。
--no-save
不更新 package.json 或保存 lockfile。
--save
保存到 package.json(默认为 true)。
--frozen-lockfile
不允许更改 lockfile。
--save-text-lockfile
保存基于文本的 lockfile。
--lockfile-only
生成 lockfile 而不安装依赖项。

Installation & Linking

--backend=<val>
用于安装依赖项的平台特定优化。可能的值:“clonefile”(默认)、“hardlink”、“symlink”、“copyfile”。
--linker=<val>
链接器策略(“isolated”或“hoisted”之一)。

Network & Registry Configuration

--ca=<val>
提供证书颁发机构签名证书。
--cafile=<val>
--ca 相同,但它是证书的文件路径。
--registry=<val>
默认使用特定注册表,覆盖 .npmrc、bunfig.toml 和环境变量。
--network-concurrency=<val>
并发网络请求的最大数量(默认 48)。

Caching

--cache-dir=<val>
将缓存数据存储并加载到特定目录路径。
--no-cache
完全忽略 manifest 缓存。

Output & Logging

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

Script Execution & Integrity

--no-verify
跳过验证新下载包的完整性。
--ignore-scripts
跳过项目 package.json 中的生命周期脚本(依赖项脚本永远不会运行)。
--concurrent-scripts=<val>
生命周期脚本的最大并发作业数(默认 5)。

Platform & Environment

--cwd=<val>
设置特定的 cwd。
--cpu=<val>
覆盖可选依赖项的 CPU 架构(例如,x64、arm64、* 表示所有)。
--os=<val>
覆盖可选依赖项的操作系统(例如,linux、darwin、* 表示所有)。

Workspace & Global Scope

-g,--global
全局安装。
--filter=<val>
为匹配的工作区更新包。
-r,--recursive
在所有工作区中更新包。

Examples

更新所有依赖项。
bun update
将所有依赖项更新到最新版本。
bun update --latest
交互式更新(选择要更新的包)。
bun update -i
更新特定包。
bun update zod jquery@3
完整的文档可在 https://bun.net.cn/docs/cli/update 找到。