
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. Son cœur est le runtime Bun, un runtime JavaScript rapide conçu pour remplacer Node.js. Il est écrit en Zig et alimenté par JavaScriptCore sous le capot, ce qui réduit considérablement les temps de démarrage et l'utilisation de la mémoire. L'outil en ligne de commande bun met également en œuvre un exécuteur de tests, un exécuteur de scripts et un gestionnaire de paquets compatible avec Node.js, tous significativement plus rapides que les outils existants et utilisables dans les projets Node.js existants avec peu ou pas de changements nécessaires.
Il s'agit de la plus grande version de Bun à ce jour.
Bun dispose désormais d'un bundler et d'un minifier JavaScript et TypeScript intégrés. Utilisez-le pour regrouper des applications frontales ou pour regrouper votre code dans un exécutable autonome.
Nous avons également amélioré les performances et corrigé des bugs comme d'habitude : writeFile() est jusqu'à 20% plus rapide sous Linux, de nombreuses corrections de bugs pour la compatibilité avec Node.js et l'API Web, le support de la syntaxe TypeScript 5.0, et divers correctifs pour bun install.
Le nouveau bundler et minifier JavaScript de Bun
Cette version se concentre sur le nouveau bundler JavaScript de Bun, mais le bundler n'est que le début d'un projet plus vaste. Dans les prochains mois, nous annoncerons Bun.App - une "super-API" qui rassemble le bundler à vitesse native, le serveur HTTP et le routeur de système de fichiers de Bun en un tout cohérent.
Elle peut être utilisée en utilisant la commande CLI bun build ou la nouvelle API JavaScript Bun.build().
Exécutables autonomes
Vous pouvez maintenant créer des exécutables autonomes avec bun build.
Cela vous permet de distribuer votre application sous la forme d'un fichier exécutable unique, sans que les utilisateurs n'aient à installer Bun.
Vous pouvez également le minifier afin d'améliorer les performances de démarrage des applications volumineuses :
Ceci est possible grâce au nouveau bundler et minifier JavaScript de Bun.
import.meta.main
Vous pouvez maintenant utiliser import.meta.main pour vérifier si le fichier actuel est le point d'entrée qui a démarré Bun. Ceci est utile pour les CLIs afin de déterminer si le fichier courant est celui qui a démarré l'application.
Par exemple, si vous avez un fichier appelé index.ts :
et que vous l'exécutez :
Mais si vous l'importez :
et que vous l'exécutez :
Améliorations apportées à bun test
fs.writeFile plus rapide sous Linux
Améliorations du transpileur
Cette version apporte également de nombreuses améliorations au transpileur. En voici quelques-unes :
Compatibilité Node.js
Compatibilité avec l'API Web
Bun dispose désormais d'un bundler et d'un minifier JavaScript et TypeScript intégrés. Utilisez-le pour regrouper des applications frontales ou pour regrouper votre code dans un exécutable autonome.
Nous avons également amélioré les performances et corrigé des bugs comme d'habitude : writeFile() est jusqu'à 20% plus rapide sous Linux, de nombreuses corrections de bugs pour la compatibilité avec Node.js et l'API Web, le support de la syntaxe TypeScript 5.0, et divers correctifs pour bun install.
Le nouveau bundler et minifier JavaScript de Bun
Cette version se concentre sur le nouveau bundler JavaScript de Bun, mais le bundler n'est que le début d'un projet plus vaste. Dans les prochains mois, nous annoncerons Bun.App - une "super-API" qui rassemble le bundler à vitesse native, le serveur HTTP et le routeur de système de fichiers de Bun en un tout cohérent.
Elle peut être utilisée en utilisant la commande CLI bun build ou la nouvelle API JavaScript Bun.build().
Code : | Sélectionner tout |
1 2 3 4 5 6 | Bun.build({ entrypoints: ["./src/index.tsx"], outdir: "./build", minify: true, // ... }); |
Exécutables autonomes
Vous pouvez maintenant créer des exécutables autonomes avec bun build.
Code : | Sélectionner tout |
bun build --compile ./foo.ts
Cela vous permet de distribuer votre application sous la forme d'un fichier exécutable unique, sans que les utilisateurs n'aient à installer Bun.
Code : | Sélectionner tout |
./foo
Vous pouvez également le minifier afin d'améliorer les performances de démarrage des applications volumineuses :
Code : | Sélectionner tout |
1 2 3 4 | bun build --minify --compile ./three.ts [32ms] minify -123 KB (estimate) [50ms] bundle 456 modules [107ms] compile three |
Ceci est possible grâce au nouveau bundler et minifier JavaScript de Bun.
Standalone executables are coming in Bun v0.6.0 pic.twitter.com/eaUeFtKisL
— Jarred Sumner (@jarredsumner) May 14, 2023
import.meta.main
Vous pouvez maintenant utiliser import.meta.main pour vérifier si le fichier actuel est le point d'entrée qui a démarré Bun. Ceci est utile pour les CLIs afin de déterminer si le fichier courant est celui qui a démarré l'application.
Par exemple, si vous avez un fichier appelé index.ts :
Code : | Sélectionner tout |
console.log(import.meta.main);
et que vous l'exécutez :
Code : | Sélectionner tout |
1 2 | $ bun ./index.ts true |
Mais si vous l'importez :
Code : | Sélectionner tout |
import "./index.ts";
et que vous l'exécutez :
Code : | Sélectionner tout |
1 2 | $ bun ./other.ts false |
Améliorations apportées à bun test
- bun test indique désormais le temps nécessaire à l'exécution des tests
in the next version of bun
— Jarred Sumner (@jarredsumner) May 11, 2023
bun:test prints out how long each test took
slow tests are highlighted yellow pic.twitter.com/yXDSJrkYBu
- describe.skip a été implémenté
- expect().toBeEven() et expect().toBeOdd() ont été implémentés
fs.writeFile plus rapide sous Linux
In the next version of Bun
— Jarred Sumner (@jarredsumner) April 27, 2023
fs.writeFile gets 20% faster for large files on Linux pic.twitter.com/QgWhBoiz2c
Améliorations du transpileur
Cette version apporte également de nombreuses améliorations au transpileur. En voici quelques-unes :
- Prise en charge de l'analyseur pour TypeScript 5.0.
- Prise en charge de l'analyseur pour les attributs d'importation.
- Certains paquets npm généraient des "ReferenceError : Cannot access uninitialized variable" lors de l'importation à cause d'un bug avec les importations cycliques dans le transpileur de Bun. Ceci a été corrigé.
- Support des commentaires // @jsx, // @jsxImportSource, et // @jsxFragment.
- Élimination du code mort pour les appels de fonctions de constructeurs globaux inutilisés comme new Set().
- Concaténation littérale de modèles de chaînes comme foo${1}${"2"}${'3'} -> foo123.
- Correction des bogues de l'analyseur pour l'instruction ES5 with, qui est obsolète.
Compatibilité Node.js
- tls.Server a un support basique (précédemment, non implémenté)
- fs.promises.constants est maintenant exporté correctement (auparavant, il était manquant)
- Le module serveur de node:http accepte maintenant (correctement) un argument callback
- Timer.refresh() fonctionne maintenant comme prévu
- Correction des erreurs mkdtemp et mkdtempSync
Compatibilité avec l'API Web
- new Request("http://example.com", otherRequest).url renvoyait auparavant l'url de otherRequest au lieu de "http://example.com". Ceci a été corrigé.
- Bun.file(path).lastModified a été ajouté, ce qui est similaire à la propriété lastModified de l'API File.
- Prise en charge de la redirect: "error" dans fetch()
- Correction de fetch.bind, fetch.call et fetch.apply qui ne fonctionnaient pas.
Et vous ?


Voir aussi



Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.