La version 0.6.0 de Bun, la boite à outils pour les applications JavaScript et TypeScript, est désormais disponible, et s'étoffe d'un bundler et d'un minifier JavaScript intégrés

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.

Nom : bun.png
Affichages : 72144
Taille : 20,4 Ko

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().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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.


Vous pouvez également le minifier afin d'améliorer les performances de démarrage des applications volumineuses :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.

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 - Visualiser dans une fenêtre à part
console.log(import.meta.main);

et que vous l'exécutez :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$ bun ./index.ts
true

Mais si vous l'importez :


et que vous l'exécutez :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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


  • describe.skip a été implémenté
  • expect().toBeEven() et expect().toBeOdd() ont été implémentés

fs.writeFile plus rapide sous Linux

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.
Source : Bun

Et vous ?

Qu'en pensez-vous ?

Quelles sont les fonctionnalités ou améliorations que vous trouvez intéressantes ?

Voir aussi

Bun, un nouveau moteur d'exécution JavaScript, livré avec un client SQLite3 rapide, il apporte un peu de concurrence pour Node et Deno

Bun, le nouveau moteur d'exécution JavaScript, prendra-t-il la couronne de Node ? Bun est présenté comme un tueur de Node en raison de sa simplicité et de sa rapidité

La version 5 de Bun, le moteur d'exécution JavaScript qui transpile, installe et exécute des projets JavaScript et TypeScript, apporte plusieurs améliorations