Documentation • Discord • Problèmes • Feuille de route
Bun est une boîte à outils tout-en-un pour les applications JavaScript et TypeScript. Il est livré sous la forme d'un seul exécutable appelé bun
.
À la base se trouve le runtime Bun , un runtime JavaScript rapide conçu pour remplacer Node.js. Il est écrit en Zig et alimenté par JavaScriptCore, ce qui réduit considérablement les temps de démarrage et l'utilisation de la mémoire.
bun run index.tsx # TS et JSX pris en charge dès le départ
L'outil de ligne de commande bun
implémente également un exécuteur de tests, un exécuteur de script et un gestionnaire de packages compatible Node.js. Au lieu de 1 000 node_modules pour le développement, vous n’avez besoin que bun
. Les outils intégrés de Bun sont nettement plus rapides que les options existantes et utilisables dans les projets Node.js existants avec peu ou pas de modifications.
bun test # exécuter testsbun run start # exécuter le script `start` dans `package.json`bun install <pkg> # installer un packagebunx cowsay 'Bonjour tout le monde !' # exécuter un paquet
Bun prend en charge Linux (x64 et arm64), macOS (x64 et Apple Silicon) et Windows (x64).
Utilisateurs Linux — La version du noyau 5.6 ou supérieure est fortement recommandée, mais le minimum est 5.1.
# avec script d'installation (recommandé)curl -fsSL https://bun.sh/install | bash# sur windowspowershell -c "irm bun.sh/install.ps1 | iex"# avec npmnpm install -g bun# avec Homebrewbrew tap Oven-sh/bun Brew Install Bun# avec Dockerdocker Pull Oven/Bun docker run --rm --init --ulimit memlock=-1:-1 four/pain
Pour mettre à niveau vers la dernière version de Bun, exécutez :
mise à niveau du chignon
Bun publie automatiquement une version Canary à chaque validation dans main
. Pour effectuer une mise à niveau vers la dernière version de Canary, exécutez :
mise à niveau du chignon --canary
Voir la version Canary
Introduction
Qu’est-ce que Bun ?
Installation
Démarrage rapide
Manuscrit
Modèles
bun init
bun create
Durée d'exécution
bun run
Types de fichiers
Manuscrit
JSX
Variables d'environnement
API Bun
API Web
Compatibilité Node.js
Exécutable à fichier unique
Plugins
Mode montre
Résolution des modules
Installation automatique
bunfig.toml
Débogueur
API du cadre
Gestionnaire de paquets
bun install
bun add
bun remove
bun update
bun link
bun pm
Cache global
Espaces de travail
Scripts de cycle de vie
Filtre
Fichier de verrouillage
Portées et registres
Remplacements et résolutions
Bundleur
Bun.build
Chargeurs
Plugins
Macro
vs esbuild
Testeur
bun test
Écrire des tests
Mode montre
Crochets de cycle de vie
Se moque
Instantanés
Dates et heures
Tests DOM
Couverture du code
Coureur de paquets
bunx
API
serveur HTTP
WebSockets
Ouvriers
Données binaires
Flux
E/S de fichier
importer.meta
SQLite
Système de fichiersRouter
Prises TCP
Prises UDP
Mondiales
$ Coquille
Processus enfants
Transpileur
Hachage
Console
FFI
HTMLRewriter
Essai
Utilitaires
API de nœud
Glob
semver
Projet
Feuille de route
Analyse comparative
Contribuer
Construire des fenêtres
Licence
Binaire
Convertir un Blob en DataView
Convertir un Blob en ReadableStream
Convertir un Blob en chaîne
Convertir un Blob en Uint8Array
Convertir un Blob en ArrayBuffer
Convertir un tampon en blob
Convertir un tampon en ReadableStream
Convertir un tampon en chaîne
Convertir un tampon en Uint8Array
Convertir un tampon en ArrayBuffer
Convertir un DataView en chaîne
Convertir un Uint8Array en un Blob
Convertir un Uint8Array en tampon
Convertir un Uint8Array en DataView
Convertir un Uint8Array en ReadableStream
Convertir un Uint8Array en chaîne
Convertir un Uint8Array en ArrayBuffer
Convertir un ArrayBuffer en Blob
Convertir un ArrayBuffer en tampon
Convertir un ArrayBuffer en chaîne
Convertir un ArrayBuffer en Uint8Array
Convertir un ArrayBuffer en un tableau de nombres
Écosystème
Construire une interface en utilisant Vite et Bun
Créez une application avec Astro et Bun
Créez une application avec Next.js et Bun
Créez une application avec Nuxt et Bun
Créez une application avec Qwik et Bun
Créez une application avec Remix et Bun
Créez une application avec SolidStart et Bun
Créez une application avec SvelteKit et Bun
Construisez un serveur HTTP en utilisant Elysia et Bun
Créez un serveur HTTP en utilisant Express et Bun
Construisez un serveur HTTP en utilisant Hono et Bun
Construisez un serveur HTTP en utilisant StricJS et Bun
Conteneuriser une application Bun avec Docker
Créer un robot Discord
Déployer une application Bun sur Render
Lire et écrire des données sur MongoDB à l'aide de Mongoose et Bun
Exécutez Bun en tant que démon avec PM2
Exécutez Bun en tant que démon avec systemd
Rendu côté serveur (SSR) un composant React
Utilisez Drizzle ORM avec Bun
Utiliser EdgeDB avec Bun
Utilisez Postgres sans serveur de Neon avec Bun
Utilisez Prisma avec Bun
Utiliser React et JSX
Ajouter Sentry à une application Bun
HTTP
Utilisation courante du serveur HTTP
Configurer TLS sur un serveur HTTP
récupérer avec les sockets de domaine Unix dans Bun
Recharger à chaud un serveur HTTP
Requêtes HTTP proxy utilisant fetch()
Envoyer une requête HTTP en utilisant fetch
Démarrer un cluster de serveurs HTTP
Diffusez un fichier en tant que réponse HTTP
Serveur HTTP de streaming avec itérateurs asynchrones
Streaming du serveur HTTP avec les flux Node.js
Télécharger des fichiers via HTTP à l'aide de FormData
Écrire un serveur HTTP simple
Installer
Ajouter une dépendance
Ajouter une dépendance de développement
Ajouter une dépendance Git
Ajouter une dépendance homologue
Ajouter une dépendance tarball
Ajouter une dépendance approuvée
Ajouter une dépendance facultative
Configurer un registre privé pour une étendue d'organisation avec Bun Install
Configurer git pour différencier le fichier de verrouillage lockb de Bun
Configurer un monorepo à l'aide d'espaces de travail
Générer un fichier de verrouillage lisible par l'homme
Installer un package sous un nom différent
Installer les dépendances avec Bun dans les actions GitHub
Remplacer le registre npm par défaut pour l'installation de Bun
Utilisation de Bun Install avec un registre npm Azure Artifacts
Utiliser l'installation de chignon avec Artifactory
Processus
Obtenez la disponibilité du processus en nanosecondes
Écoutez CTRL+C
Écoutez les signaux du système d'exploitation
Analyser les arguments de ligne de commande
Lire depuis stdin
Lire stderr à partir d'un processus enfant
Lire la sortie standard d'un processus enfant
Générer un processus enfant
Générer un processus enfant et communiquer à l'aide d'IPC
Lire le fichier
Vérifier si un fichier existe
Obtenir le type MIME d'un fichier
Lire un fichier en tant que ReadableStream
Lire un fichier sous forme de chaîne
Lire un fichier dans un tampon
Lire un fichier sur un Uint8Array
Lire un fichier dans un ArrayBuffer
Lire un fichier JSON
Surveiller un répertoire pour les modifications
Durée d'exécution
Débogage de Bun avec l'extension VS Code
Débogage de Bun avec le débogueur Web
Définir et remplacer les globales et constantes statiques
Importer un fichier JSON
Importer un fichier TOML
Importer un fichier HTML sous forme de texte
Installez et exécutez Bun dans GitHub Actions
Installer les déclarations TypeScript pour Bun
Remapper les chemins d'importation
Lire les variables d'environnement
Exécuter une commande Shell
Définir un fuseau horaire à Bun
Définir les variables d'environnement
Flux
Convertir un Node.js lisible en un Blob
Convertir un Node.js lisible en chaîne
Convertir un Node.js lisible en ArrayBuffer
Convertir un Node.js lisible en JSON
Convertir un ReadableStream en un Blob
Convertir un ReadableStream en tampon
Convertir un ReadableStream en chaîne
Convertir un ReadableStream en un Uint8Array
Convertir un ReadableStream en un tableau de morceaux
Convertir un ReadableStream en ArrayBuffer
Convertir un ReadableStream en JSON
Test
Libérez-vous tôt avec le coureur d'essai de Bun
Générez des rapports de couverture de code avec le programme d'exécution de test Bun
Marquer un test comme « à faire » avec le lanceur de tests Bun
Migrer de Jest vers le testeur de Bun
Fonctions simulées dans bun test
Réexécutez les tests plusieurs fois avec le lanceur de tests Bun
Exécutez des tests en mode montre avec Bun
Exécutez vos tests avec le lanceur de tests Bun
Définir un seuil de couverture de code avec le lanceur de test Bun
Définir un délai d'attente par test avec le programme d'exécution de test Bun
Définir l'heure du système dans le programme d'exécution de test de Bun
Passer les tests avec le lanceur de tests Bun
Espionner les méthodes dans bun test
Mettre à jour les instantanés dans bun test
Utiliser les tests d'instantanés dans bun test
Écrivez des tests DOM de navigateur avec Bun et happy-dom
Utilitaire
Vérifiez si le fichier actuel est le point d'entrée
Vérifiez si deux objets sont profondément égaux
Compresser et décompresser les données avec DEFLATE
Compresser et décompresser des données avec gzip
Convertir une URL de fichier en chemin absolu
Convertir un chemin absolu en URL de fichier
Détecter quand le code est exécuté avec Bun
Encoder et décoder les chaînes base64
Échapper à une chaîne HTML
Obtenez le chemin absolu du fichier actuel
Obtenez le chemin absolu vers le point d'entrée actuel
Obtenez la version actuelle de Bun
Récupère le répertoire du fichier actuel
Obtenez le nom du fichier actuel
Obtenez le chemin d'accès à un fichier bin exécutable
Hachez un mot de passe
Dormir pendant un nombre fixe de millisecondes
WebSocket
Créer un serveur WebSocket de publication-abonnement
Construire un serveur WebSocket simple
Activer la compression pour les messages WebSocket
Définir des données contextuelles par socket sur un WebSocket
Écrire un fichier
Ajouter du contenu à un fichier
Copier un fichier vers un autre emplacement
Supprimer un fichier
Écrire un Blob dans un fichier
Écrire un fichier de manière incrémentielle
Écrire un fichier sur la sortie standard
Écrire un ReadableStream dans un fichier
Écrire une réponse à un fichier
Écrire une chaîne dans un fichier
Écrire sur la sortie standard
Reportez-vous au guide Projet > Contribuer pour commencer à contribuer à Bun.
Reportez-vous à la page Projet > Licence pour plus d'informations sur les licences de Bun.