使用 bun outdated 来检查项目中过期的依赖。该命令会显示一个依赖列表表格,其中列出了有更新版本的依赖包。
| 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(最新):注册表中发布的最新版本
依赖过滤
bun outdated 支持通过包名或通配符模式搜索过期的依赖。
要检查特定的依赖是否过期,可以将包名作为位置参数传递:
bun outdated eslint-plugin-security eslint-plugin-sonarjs
| Package | Current | Update | Latest |
| ------------------------------ | ------- | ------ | --------- |
| 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 |
你也可以传入通配符模式来检查过期的包:
| 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/* 包:
| Package | Current | Update | Latest |
| ------------------ | ------- | ------ | ------ |
| @types/bun (dev) | 1.3.0 | 1.3.3 | 1.3.3 |
或者排除所有 @types/* 包:
| 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 参数可以检查其它工作区包的过期依赖:
bun outdated --filter='@monorepo/types'
| 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 来检查多个工作区:
bun outdated --filter @monorepo/types --filter @monorepo/cli
| 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 --filter='@monorepo/{types,cli}'
| 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 中定义的目录依赖:
┌────────────────────┬─────────┬─────────┬─────────┬────────────────────────────────┐
│ 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, @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 使用方法
通用选项
输出与日志
依赖范围与目标
排除 dev、optional 或 peer 依赖安装
锁文件与 package.json
保存至 package.json(默认 true)
添加至项目的 package.json 中的 trustedDependencies 并安装包
网络与注册表
默认使用特定注册表,覆盖 .npmrc、bunfig.toml 和环境变量
执行行为
跳过项目 package.json 中的生命周期脚本(依赖脚本永不执行)
--backend
string
default:"clonefile"
用于安装依赖的特定平台优化。可选值:clonefile(默认),hardlink,symlink,copyfile