IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Anthony

37PARTAGES

6  0 
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().

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.
[tweet]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Standalone executables are coming in Bun v0.6.0 <a href="https://t.co/eaUeFtKisL">pic.twitter.com/eaUeFtKisL</a></p>&mdash; Jarred Sumner (@jarredsumner) <a href="https://twitter.com/jarredsumner/status/1657750890349215744?ref_src=twsrc%5Etfw">May 14, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>[/tweet]

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

[tweet]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">in the next version of bun<br><br>bun:test prints out how long each test took<br><br>slow tests are highlighted yellow <a href="https://t.co/yXDSJrkYBu">pic.twitter.com/yXDSJrkYBu</a></p>&mdash; Jarred Sumner (@jarredsumner) <a href="https://twitter.com/jarredsumner/status/1656569942354042880?ref_src=twsrc%5Etfw">May 11, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>[/tweet]

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

fs.writeFile plus rapide sous Linux
[tweet]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">In the next version of Bun<br><br>fs.writeFile gets 20% faster for large files on Linux <a href="https://t.co/QgWhBoiz2c">pic.twitter.com/QgWhBoiz2c</a></p>&mdash; Jarred Sumner (@jarredsumner) <a href="https://twitter.com/jarredsumner/status/1651533306868137984?ref_src=twsrc%5Etfw">April 27, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>[/tweet]

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

Une erreur dans cette actualité ? Signalez-nous-la !