Skip to content

bun install est un client npm compatible avec Node.js conçu pour être un successeur extrêmement rapide de npm.

Nous avons beaucoup travaillé pour nous assurer que la migration de npm install vers bun install est aussi simple que d'exécuter bun install au lieu de npm install.

  • Conçu pour Node.js et Bun : bun install installe un dossier node_modules compatible avec Node.js. Vous pouvez l'utiliser à la place de npm install pour les projets Node.js sans aucun changement de code et sans utiliser le runtime de Bun.
  • Convertit automatiquement package-lock.json au format de fichier de verrouillage bun.lock de Bun, en préservant vos versions de dépendances résolues existantes sans aucun travail manuel de votre part. Vous pouvez secrètement utiliser bun install à la place de npm install au travail sans que personne ne le remarque.
  • Compatible .npmrc : bun install lit la configuration du registre npm depuis le .npmrc de npm, vous pouvez donc utiliser la même configuration pour npm et Bun.
  • Liens physiques : Sur Windows et Linux, bun install utilise des liens physiques pour économiser de l'espace disque et des temps d'installation.
bash
# Il ne faut qu'une seule commande pour migrer
bun i

# Pour ajouter des dépendances :
bun i @types/bun

# Pour ajouter des devDependencies :
bun i -d @types/bun

# Pour supprimer une dépendance :
bun rm @types/bun

Exécuter les scripts package.json plus rapidement

Exécutez des scripts depuis package.json, des exécutables depuis node_modules/.bin (un peu comme npx), et des fichiers JavaScript/TypeScript (tout comme node) - le tout avec une seule commande simple.

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

Lorsque vous utilisez bun run <executable>, il choisira l'exécutable installé localement

sh
# Exécuter un script package.json :
bun my-script
bun run my-script

# Exécuter un exécutable dans node_modules/.bin :
bun my-executable # tel que tsc, esbuild, etc.
bun run my-executable

# Exécuter un fichier JavaScript/TypeScript :
bun ./index.ts

Workspaces ? Oui.

bun install prend en charge les workspaces de manière similaire à npm, avec plus de fonctionnalités.

Dans package.json, vous pouvez définir "workspaces" sur un tableau de chemins relatifs.

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

Filtrer les scripts par nom de workspace

Dans Bun, l'option --filter accepte un motif glob et exécutera la commande simultanément pour tous les packages workspace dont le name correspond au motif, en respectant l'ordre des dépendances.

sh
bun --filter 'lib-*' my-script
# au lieu de :
# npm run --workspace lib-foo --workspace lib-bar my-script

Mettre à jour les dépendances

Pour mettre à jour une dépendance, vous pouvez utiliser bun update <package>. Cela mettra à jour la dépendance vers la dernière version qui satisfait la plage semver spécifiée dans package.json.

sh
# Mettre à jour une seule dépendance
bun update @types/bun

# Mettre à jour toutes les dépendances
bun update

# Ignorer semver, mettre à jour vers la dernière version
bun update @types/bun --latest

# Mettre à jour une dépendance vers une version spécifique
bun update @types/bun@1.3.3

# Mettre à jour toutes les dépendances vers les dernières versions
bun update --latest

Afficher les dépendances obsolètes

Pour afficher les dépendances obsolètes, exécutez bun outdated. C'est comme npm outdated mais avec une sortie plus compacte.

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  │
└────────────────────────────────────────┴─────────┴────────┴────────┘

Lister les packages installés

Pour lister les packages installés, vous pouvez utiliser bun pm ls. Cela listera tous les packages installés dans le dossier node_modules en utilisant le fichier de verrouillage de Bun comme source de vérité. Vous pouvez passer l'option -a pour lister tous les packages installés, y compris les dépendances transitives.

sh
# Lister les packages installés de premier niveau :
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
# Lister tous les packages installés :
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
...

Créer un tarball de package

Pour créer un tarball de package, vous pouvez utiliser bun pm pack. Cela créera un tarball du package dans le répertoire courant.

sh
# Créer un tarball
bun pm pack
txt
Total files: 46
Shasum: 2ee19b6f0c6b001358449ca0eadead703f326216
Integrity: sha512-ZV0lzWTEkGAMz[...]Gl4f8lA9sl97g==
Unpacked size: 0.41MB
Packed size: 117.50KB

Shebang

Si le package référence node dans le shebang #!/usr/bin/env node, bun run le respectera par défaut et utilisera l'exécutable node du système. Vous pouvez le forcer à utiliser le node de Bun en passant --bun à bun run.

Lorsque vous passez --bun à bun run, nous créons un lien symbolique vers l'exécutable Bun installé localement nommé "node" dans un répertoire temporaire et l'ajoutons à votre PATH pour la durée de l'exécution du script.

sh
# Forcer l'utilisation du runtime de Bun au lieu de node
bun --bun my-script

# Cela fonctionne aussi :
bun run --bun my-script

Installations globales

Vous pouvez installer des packages globalement en utilisant bun i -g <package>. Cela installera dans un dossier .bun/install/global/node_modules dans votre répertoire personnel par défaut.

sh
# Installer un package globalement
bun i -g eslint

# Exécuter un package installé globalement sans le préfixe `bun run`
eslint --init

Bun édité par www.bunjs.com.cn