Skip to content

bun install ist ein Node.js-kompatibler npm-Client, der als extrem schneller Nachfolger von npm konzipiert ist.

Wir haben viel Arbeit investiert, um sicherzustellen, dass der Migrationspfad von npm install zu bun install so einfach ist wie das Ausführen von bun install anstelle von npm install.

  • Für Node.js und Bun entwickelt: bun install installiert einen Node.js-kompatiblen node_modules-Ordner. Sie können es anstelle von npm install für Node.js-Projekte ohne Code-Änderungen und ohne Verwendung der Bun-Laufzeitumgebung verwenden.
  • Konvertiert automatisch package-lock.json zu Buns bun.lock-Lockfile-Format und behält Ihre vorhandenen aufgelösten Abhängigkeitsversionen ohne manuelle Arbeit bei. Sie können bun install heimlich anstelle von npm install bei der Arbeit verwenden, ohne dass es jemand bemerkt.
  • .npmrc-kompatibel: bun install liest npm-Registry-Konfiguration aus npms .npmrc, sodass Sie dieselbe Konfiguration für npm und Bun verwenden können.
  • Hardlinks: Unter Windows und Linux verwendet bun install Hardlinks, um Speicherplatz und Installationszeiten zu sparen.
bash
# Es braucht nur einen Befehl zum Migrieren
bun i

# Um Abhängigkeiten hinzuzufügen:
bun i @types/bun

# Um devDependencies hinzuzufügen:
bun i -d @types/bun

# Um eine Abhängigkeit zu entfernen:
bun rm @types/bun

package.json-Skripte schneller ausführen

Führen Sie Skripte aus package.json, ausführbare Dateien aus node_modules/.bin (ähnlich wie npx) und JavaScript/TypeScript-Dateien (genau wie node) aus – alles mit einem einzigen einfachen Befehl.

NPMBun
npm run <script>bun <script>
npm exec <bin>bun <bin>
node <file>bun <file>
npx <package>bunx <package>

Wenn Sie bun run <executable> verwenden, wird die lokal installierte ausführbare Datei ausgewählt.

sh
# Ein package.json-Skript ausführen:
bun my-script
bun run my-script

# Eine ausführbare Datei in node_modules/.bin ausführen:
bun my-executable # wie tsc, esbuild, etc.
bun run my-executable

# Eine JavaScript/TypeScript-Datei ausführen:
bun ./index.ts

Workspaces? Ja.

bun install unterstützt Workspaces ähnlich wie npm, mit weiteren Funktionen.

In package.json können Sie "workspaces" auf ein Array relativer Pfade setzen.

json
{
  "name": "my-app",
  "workspaces": ["packages/*", "apps/*"]
}

Skripte nach Workspace-Name filtern

In Bun akzeptiert das --filter-Flag ein Glob-Muster und führt den Befehl gleichzeitig für alle Workspace-Pakete mit einem name aus, der dem Muster entspricht, unter Berücksichtigung der Abhängigkeitsreihenfolge.

sh
bun --filter 'lib-*' my-script
# Anstelle von:
# npm run --workspace lib-foo --workspace lib-bar my-script

Abhängigkeiten aktualisieren

Um eine Abhängigkeit zu aktualisieren, können Sie bun update <package> verwenden. Dies aktualisiert die Abhängigkeit auf die neueste Version, die den in package.json angegebenen semver-Bereich erfüllt.

sh
# Eine einzelne Abhängigkeit aktualisieren
bun update @types/bun

# Alle Abhängigkeiten aktualisieren
bun update

# Semver ignorieren, auf die neueste Version aktualisieren
bun update @types/bun --latest

# Eine Abhängigkeit auf eine bestimmte Version aktualisieren
bun update @types/bun@1.3.3

# Alle Abhängigkeiten auf die neuesten Versionen aktualisieren
bun update --latest

Veraltete Abhängigkeiten anzeigen

Um veraltete Abhängigkeiten anzuzeigen, führen Sie bun outdated aus. Dies ist wie npm outdated, aber mit kompakterer Ausgabe.

sh
bun outdated
txt
┌────────────────────────────────────────┬─────────┬────────┬────────┐
│ Package                                │ Current │ Update │ Latest │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @types/bun (dev)                       │ 1.1.6   │ 1.1.10 │ 1.1.10 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @types/react (dev)                     │ 18.3.3  │ 18.3.8 │ 18.3.8 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @typescript-eslint/eslint-plugin (dev) │ 7.16.1  │ 7.18.0 │ 8.6.0  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @typescript-eslint/parser (dev)        │ 7.16.1  │ 7.18.0 │ 8.6.0  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @vscode/debugadapter (dev)             │ 1.66.0  │ 1.67.0 │ 1.67.0 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ esbuild (dev)                          │ 0.21.5  │ 0.21.5 │ 0.24.0 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ eslint (dev)                           │ 9.7.0   │ 9.11.0 │ 9.11.0 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ mitata (dev)                           │ 0.1.11  │ 0.1.14 │ 1.0.2  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ prettier-plugin-organize-imports (dev) │ 4.0.0   │ 4.1.0  │ 4.1.0  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ source-map-js (dev)                    │ 1.2.0   │ 1.2.1  │ 1.2.1  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ typescript (dev)                       │ 5.5.3   │ 5.6.2  │ 5.6.2  │
└────────────────────────────────────────┴─────────┴────────┴────────┘

Installierte Pakete auflisten

Um installierte Pakete aufzulisten, können Sie bun pm ls verwenden. Dies listet alle Pakete auf, die im node_modules-Ordner installiert sind, wobei Buns Lockfile als Quelle der Wahrheit verwendet wird. Sie können das -a-Flag übergeben, um alle installierten Pakete einschließlich transitiver Abhängigkeiten aufzulisten.

sh
# Top-level installierte Pakete auflisten:
bun pm ls
txt
my-pkg node_modules (781)
├── @types/node@20.16.5
├── @types/react@18.3.8
├── @types/react-dom@18.3.0
├── eslint@8.57.1
├── eslint-config-next@14.2.8
...
sh
# Alle installierten Pakete auflisten:
bun pm ls -a
txt
my-pkg node_modules
├── @alloc/quick-lru@5.2.0
├── @isaacs/cliui@8.0.2
│   └── strip-ansi@7.1.0
│       └── ansi-regex@6.1.0
├── @jridgewell/gen-mapping@0.3.5
├── @jridgewell/resolve-uri@3.1.2
...

Ein Paket-Tarball erstellen

Um ein Paket-Tarball zu erstellen, können Sie bun pm pack verwenden. Dies erstellt ein Tarball des Pakets im aktuellen Verzeichnis.

sh
# Ein Tarball erstellen
bun pm pack
txt
Total files: 46
Shasum: 2ee19b6f0c6b001358449ca0eadead703f326216
Integrity: sha512-ZV0lzWTEkGAMz[...]Gl4f8lA9sl97g==
Unpacked size: 0.41MB
Packed size: 117.50KB

Shebang

Wenn das Paket node in der #!/usr/bin/env node-Shebang referenziert, respektiert bun run dies standardmäßig und verwendet die node-Ausführbare Datei des Systems. Sie können es zwingen, Buns node zu verwenden, indem Sie --bun an bun run übergeben.

Wenn Sie --bun an bun run übergeben, erstellen wir einen Symlink zur lokal installierten Bun-Ausführbaren Datei namens "node" in einem temporären Verzeichnis und fügen diesen für die Dauer der Skriptausführung zu Ihrem PATH hinzu.

sh
# Buns Laufzeitumgebung anstelle von node erzwingen
bun --bun my-script

# Dies funktioniert auch:
bun run --bun my-script

Globale Installationen

Sie können Pakete global mit bun i -g <package> installieren. Dies installiert standardmäßig in einen .bun/install/global/node_modules-Ordner in Ihrem Home-Verzeichnis.

sh
# Ein Paket global installieren
bun i -g eslint

# Ein global installiertes Paket ohne das `bun run`-Präfix ausführen
eslint --init

Bun von www.bunjs.com.cn bearbeitet