執行環境套件管理器打包器測試執行器程式碼檢查格式化指南參考部落格意見回饋

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 倍)