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 installinstalliert einen Node.js-kompatiblennode_modules-Ordner. Sie können es anstelle vonnpm installfür Node.js-Projekte ohne Code-Änderungen und ohne Verwendung der Bun-Laufzeitumgebung verwenden. - Konvertiert automatisch
package-lock.jsonzu Bunsbun.lock-Lockfile-Format und behält Ihre vorhandenen aufgelösten Abhängigkeitsversionen ohne manuelle Arbeit bei. Sie könnenbun installheimlich anstelle vonnpm installbei der Arbeit verwenden, ohne dass es jemand bemerkt. .npmrc-kompatibel:bun installliest 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 installHardlinks, um Speicherplatz und Installationszeiten zu sparen.
# 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/bunpackage.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.
| NPM | Bun |
|---|---|
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.
# 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.tsWorkspaces? 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.
{
"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.
bun --filter 'lib-*' my-script
# Anstelle von:
# npm run --workspace lib-foo --workspace lib-bar my-scriptAbhä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.
# 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 --latestVeraltete Abhängigkeiten anzeigen
Um veraltete Abhängigkeiten anzuzeigen, führen Sie bun outdated aus. Dies ist wie npm outdated, aber mit kompakterer Ausgabe.
bun outdated┌────────────────────────────────────────┬─────────┬────────┬────────┐
│ 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.
# Top-level installierte Pakete auflisten:
bun pm lsmy-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
...# Alle installierten Pakete auflisten:
bun pm ls -amy-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.
# Ein Tarball erstellen
bun pm packTotal files: 46
Shasum: 2ee19b6f0c6b001358449ca0eadead703f326216
Integrity: sha512-ZV0lzWTEkGAMz[...]Gl4f8lA9sl97g==
Unpacked size: 0.41MB
Packed size: 117.50KBShebang
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.
# Buns Laufzeitumgebung anstelle von node erzwingen
bun --bun my-script
# Dies funktioniert auch:
bun run --bun my-scriptGlobale 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.
# Ein Paket global installieren
bun i -g eslint
# Ein global installiertes Paket ohne das `bun run`-Präfix ausführen
eslint --init