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 installinstalle un dossiernode_modulescompatible avec Node.js. Vous pouvez l'utiliser à la place denpm installpour les projets Node.js sans aucun changement de code et sans utiliser le runtime de Bun. - Convertit automatiquement
package-lock.jsonau format de fichier de verrouillagebun.lockde Bun, en préservant vos versions de dépendances résolues existantes sans aucun travail manuel de votre part. Vous pouvez secrètement utiliserbun installà la place denpm installau travail sans que personne ne le remarque. - Compatible
.npmrc: bun install lit la configuration du registre npm depuis le.npmrcde npm, vous pouvez donc utiliser la même configuration pour npm et Bun. - Liens physiques : Sur Windows et Linux,
bun installutilise des liens physiques pour économiser de l'espace disque et des temps d'installation.
# 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/bunExé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.
| NPM | Bun |
|---|---|
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
# 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.tsWorkspaces ? 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.
{
"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.
bun --filter 'lib-*' my-script
# au lieu de :
# npm run --workspace lib-foo --workspace lib-bar my-scriptMettre à 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.
# 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 --latestAfficher 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.
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 │
└────────────────────────────────────────┴─────────┴────────┴────────┘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.
# Lister les packages installés de premier niveau :
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
...# Lister tous les packages installés :
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
...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.
# Créer un tarball
bun pm packTotal files: 46
Shasum: 2ee19b6f0c6b001358449ca0eadead703f326216
Integrity: sha512-ZV0lzWTEkGAMz[...]Gl4f8lA9sl97g==
Unpacked size: 0.41MB
Packed size: 117.50KBShebang
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.
# Forcer l'utilisation du runtime de Bun au lieu de node
bun --bun my-script
# Cela fonctionne aussi :
bun run --bun my-scriptInstallations 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.
# Installer un package globalement
bun i -g eslint
# Exécuter un package installé globalement sans le préfixe `bun run`
eslint --init