mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 10:58:56 +00:00
141 lines
4.0 KiB
Plaintext
141 lines
4.0 KiB
Plaintext
---
|
|
title: "bun update"
|
|
description: "Update dependencies to latest versions"
|
|
---
|
|
|
|
import Update from "/snippets/cli/update.mdx";
|
|
|
|
<Note>To upgrade your Bun CLI version, see [`bun upgrade`](/installation#upgrading).</Note>
|
|
|
|
To update all dependencies to the latest version:
|
|
|
|
```sh terminal icon="terminal"
|
|
bun update
|
|
```
|
|
|
|
To update a specific dependency to the latest version:
|
|
|
|
```sh terminal icon="terminal"
|
|
bun update [package]
|
|
```
|
|
|
|
## `--interactive`
|
|
|
|
For a more controlled update experience, use the `--interactive` flag to select which packages to update:
|
|
|
|
```sh terminal icon="terminal"
|
|
bun update --interactive
|
|
bun update -i
|
|
```
|
|
|
|
This launches an interactive terminal interface that shows all outdated packages with their current and target versions. You can then select which packages to update.
|
|
|
|
### Interactive Interface
|
|
|
|
The interface displays packages grouped by dependency type:
|
|
|
|
```txt
|
|
? 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:**
|
|
|
|
- Packages are grouped under section headers: `dependencies`, `devDependencies`, `peerDependencies`, `optionalDependencies`
|
|
- Each section shows column headers aligned with the package data
|
|
|
|
**Columns:**
|
|
|
|
- **Package**: Package name (may have suffix like ` dev`, ` peer`, ` optional` for clarity)
|
|
- **Current**: Currently installed version
|
|
- **Target**: Version that would be installed (respects semver constraints)
|
|
- **Latest**: Latest available version
|
|
|
|
### Keyboard Controls
|
|
|
|
**Selection:**
|
|
|
|
- **Space**: Toggle package selection
|
|
- **Enter**: Confirm selections and update
|
|
- **a/A**: Select all packages
|
|
- **n/N**: Select none
|
|
- **i/I**: Invert selection
|
|
|
|
**Navigation:**
|
|
|
|
- **↑/↓ Arrow keys** or **j/k**: Move cursor
|
|
- **l/L**: Toggle between target and latest version for current package
|
|
|
|
**Exit:**
|
|
|
|
- **Ctrl+C** or **Ctrl+D**: Cancel without updating
|
|
|
|
### Visual Indicators
|
|
|
|
- **☑** Selected packages (will be updated)
|
|
- **□** Unselected packages
|
|
- **>** Current cursor position
|
|
- **Colors**: Red (major), yellow (minor), green (patch) version changes
|
|
- **Underlined**: Currently selected update target
|
|
|
|
### Package Grouping
|
|
|
|
Packages are organized in sections by dependency type:
|
|
|
|
- **dependencies** - Regular runtime dependencies
|
|
- **devDependencies** - Development dependencies
|
|
- **peerDependencies** - Peer dependencies
|
|
- **optionalDependencies** - Optional dependencies
|
|
|
|
Within each section, individual packages may have additional suffixes (` dev`, ` peer`, ` optional`) for extra clarity.
|
|
|
|
## `--recursive`
|
|
|
|
Use the `--recursive` flag with `--interactive` to update dependencies across all workspaces in a monorepo:
|
|
|
|
```sh terminal icon="terminal"
|
|
bun update --interactive --recursive
|
|
bun update -i -r
|
|
```
|
|
|
|
This displays an additional "Workspace" column showing which workspace each dependency belongs to.
|
|
|
|
## `--latest`
|
|
|
|
By default, `bun update` will update to the latest version of a dependency that satisfies the version range specified in your `package.json`.
|
|
|
|
To update to the latest version, regardless of if it's compatible with the current version range, use the `--latest` flag:
|
|
|
|
```sh terminal icon="terminal"
|
|
bun update --latest
|
|
```
|
|
|
|
In interactive mode, you can toggle individual packages between their target version (respecting semver) and latest version using the **l** key.
|
|
|
|
For example, with the following `package.json`:
|
|
|
|
```json package.json icon="file-json"
|
|
{
|
|
"dependencies": {
|
|
"react": "^17.0.2"
|
|
}
|
|
}
|
|
```
|
|
|
|
- `bun update` would update to a version that matches `17.x`.
|
|
- `bun update --latest` would update to a version that matches `18.x` or later.
|
|
|
|
---
|
|
|
|
<Update />
|