运行时包管理器打包器测试运行器代码检查格式化指南参考博客反馈

bun 过期依赖

检查过期的依赖

bun outdated 会显示项目中有较新版本可用的依赖项列表。

terminal
bun outdated
Text
| Package                        | Current | Update    | Latest     |
| ------------------------------ | ------- | --------- | ---------- |
| @sinclair/typebox              | 0.34.15 | 0.34.16   | 0.34.16    |
| @types/bun (dev)               | 1.3.0   | 1.3.3     | 1.3.3      |
| eslint (dev)                   | 8.57.1  | 8.57.1    | 9.20.0     |
| eslint-plugin-security (dev)   | 2.1.1   | 2.1.1     | 3.0.1      |
| eslint-plugin-sonarjs (dev)    | 0.23.0  | 0.23.0    | 3.0.1      |
| expect-type (dev)              | 0.16.0  | 0.16.0    | 1.1.0      |
| prettier (dev)                 | 3.4.2   | 3.5.0     | 3.5.0      |
| tsup (dev)                    | 8.3.5   | 8.3.6     | 8.3.6      |
| typescript (dev)               | 5.7.2   | 5.7.3     | 5.7.3      |

版本信息

输出的表格显示了三列版本信息:

  • Current(当前):当前安装的版本
  • Update(更新):满足你的 package.json 版本范围的最新版本
  • Latest(最新):注册表中发布的最新版本

依赖过滤

要检查特定的依赖项,请将其名称作为位置参数传入:

terminal
bun outdated eslint-plugin-security
Text
| Package                        | Current | Update | Latest    |
| ------------------------------ | ------- | ------ | --------- |
| eslint-plugin-security (dev)   | 2.1.1   | 2.1.1  | 3.0.1     |

Glob 模式同样适用:

terminal
bun outdated 'eslint*'
Text
| Package                        | Current | Update | Latest     |
| ------------------------------ | ------- | ------ | ---------- |
| eslint (dev)                   | 8.57.1  | 8.57.1 | 9.20.0     |
| eslint-plugin-security (dev)   | 2.1.1   | 2.1.1  | 3.0.1      |
| eslint-plugin-sonarjs (dev)    | 0.23.0  | 0.23.0 | 3.0.1      |

例如,要检查过期的 @types/* 包:

terminal
bun outdated '@types/*'
Text
| Package            | Current | Update | Latest |
| ------------------ | ------- | ------ | ------ |
| @types/bun (dev)   | 1.3.0   | 1.3.3  | 1.3.3 |

或者排除所有 @types/* 包:

terminal
bun outdated '!@types/*'
Text
| Package                        | Current | Update    | Latest     |
| ------------------------------ | ------- | --------- | ---------- |
| @sinclair/typebox              | 0.34.15 | 0.34.16   | 0.34.16    |
| eslint (dev)                   | 8.57.1  | 8.57.1    | 9.20.0     |
| eslint-plugin-security (dev)   | 2.1.1   | 2.1.1     | 3.0.1      |
| eslint-plugin-sonarjs (dev)    | 0.23.0  | 0.23.0     | 3.0.1      |
| expect-type (dev)              | 0.16.0  | 0.16.0    | 1.1.0      |
| prettier (dev)                 | 3.4.2   | 3.5.0     | 3.5.0      |
| tsup (dev)                    | 8.3.5   | 8.3.6     | 8.3.6      |
| typescript (dev)               | 5.7.2   | 5.7.3     | 5.7.3      |

工作区过滤

使用 --filter 参数可以检查其它工作区包的过期依赖:

terminal
bun outdated --filter='@monorepo/types'
Text
| Package            | Current | Update | Latest |
| ------------------ | ------- | ------ | ------ |
| tsup (dev)         | 8.3.5   | 8.3.6  | 8.3.6  |
| typescript (dev)   | 5.7.2   | 5.7.3  | 5.7.3  |

--filter 接受 Glob 模式,可匹配多个工作区:

terminal
bun outdated --filter='@monorepo/{types,cli}'
Text
| Package                        | Current | Update | Latest     |
| ------------------------------ | ------- | ------ | ---------- |
| eslint (dev)                   | 8.57.1  | 8.57.1 | 9.20.0     |
| eslint-plugin-security (dev)   | 2.1.1   | 2.1.1  | 3.0.1      |
| eslint-plugin-sonarjs (dev)    | 0.23.0  | 0.23.0 | 3.0.1      |
| expect-type (dev)              | 0.16.0  | 0.16.0 | 1.1.0      |
| tsup (dev)                    | 8.3.5   | 8.3.6  | 8.3.6      |
| typescript (dev)               | 5.7.2   | 5.7.3  | 5.7.3      |

目录依赖

bun outdated 还会检查 package.json 中定义的目录依赖:

terminal
bun outdated -r
Text
┌────────────────────┬─────────┬─────────┬─────────┬────────────────────────────────┐
│ Package            │ Current │ Update  │ Latest  │ Workspace                      │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ body-parser        │ 1.19.0  │ 1.19.0  │ 2.2.0   │ @test/shared                   │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ cors               │ 2.8.0   │ 2.8.0   │ 2.8.5   │ @test/shared                   │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ chalk              │ 4.0.0   │ 4.0.0   │ 5.6.2   │ @test/utils                    │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ uuid               │ 8.0.0   │ 8.0.0   │ 13.0.0  │ @test/utils                    │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ axios              │ 0.21.0  │ 0.21.0  │ 1.12.2  │ catalog (@test/app)            │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ lodash             │ 4.17.15 │ 4.17.15 │ 4.17.21 │ catalog (@test/app)            │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ react              │ 17.0.0  │ 17.0.0  │ 19.1.1  │ catalog (@test/app)            │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ react-dom          │ 17.0.0  │ 17.0.0  │ 19.1.1  │ catalog (@test/app)            │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ express            │ 4.17.0  │ 4.17.0  │ 5.1.0   │ catalog (@test/shared)         │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ moment             │ 2.24.0  │ 2.24.0  │ 2.30.1  │ catalog (@test/utils)          │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ @types/node (dev)  │ 14.0.0  │ 14.0.0  │ 24.5.2  │ @test/shared                   │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ @types/react (dev) │ 17.0.0  │ 17.0.0  │ 19.1.15 │ catalog:testing (@test/app)    │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ eslint (dev)       │ 7.0.0   │ 7.0.0   │ 9.36.0  │ catalog:testing (@test/app)    │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ typescript (dev)   │ 4.9.5   │ 4.9.5   │ 5.9.2   │ catalog:build (@test/app)      │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ jest (dev)         │ 26.0.0  │ 26.0.0  │ 30.2.0  │ catalog:testing (@test/shared) │
├────────────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
│ prettier (dev)     │ 2.0.0   │ 2.0.0   │ 3.6.2   │ catalog:build (@test/utils)    │
└────────────────────┴─────────┴─────────┴─────────┴────────────────────────────────┘

CLI 使用方法

terminal
bun outdated <filter>

通用选项

-c, --configstring

指定配置文件路径(bunfig.toml)

--cwdstring

设置特定的当前工作目录

-h, --helpboolean

打印帮助菜单

-F, --filterstring

显示匹配工作区的过期依赖项

-r, --recursiveboolean

检查所有工作区中的过期软件包

输出与日志

--silentboolean

不输出任何日志

--verboseboolean

详细输出日志

--no-progressboolean

禁用进度条

--no-summaryboolean

不打印摘要

依赖范围与目标

-p, --productionboolean

不安装 devDependencies

--omitstring

排除 dev、optional 或 peer 依赖安装

-g, --globalboolean

全局安装

锁文件与 package.json

-y, --yarnboolean

写入 yarn.lock 文件(yarn v1)

--no-saveboolean

不更新 package.json 或保存锁文件

--savebooleandefault true

保存至 package.json(默认 true)

--frozen-lockfileboolean

禁止修改锁文件

--save-text-lockfileboolean

保存基于文本的锁文件

--lockfile-onlyboolean

仅生成锁文件,不安装依赖

--trustboolean

添加至项目的 package.json 中的 trustedDependencies 并安装包

网络与注册表

--castring

提供证书颁发机构签名证书

--cafilestring

同 --ca,但为证书文件路径

--registrystring

默认使用特定注册表,覆盖 .npmrc、bunfig.toml 和环境变量

--network-concurrencynumberdefault 48

最大并发网络请求数(默认 48)

缓存

--cache-dirstring

从特定目录路径存储和加载缓存数据

--no-cacheboolean

完全忽略清单缓存

执行行为

--dry-runboolean

无效。bun outdated 为只读操作

-f, --forceboolean

始终从注册表请求最新版本并重新安装所有依赖

--no-verifyboolean

跳过校验新下载包的完整性

--ignore-scriptsboolean

跳过所有软件包的生命周期脚本,包括项目的 package.json 和受信任的依赖项

--backendstring

用于安装依赖项的平台专属优化。可能的值:clonefile(macOS 上的默认值)、hardlink(Linux 和 Windows 上的默认值)、symlink、copyfile

--concurrent-scriptsnumber

生命周期脚本的最大并发任务数(默认:CPU 核心数的 2 倍)