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().
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.
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 :
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 :
console.log(import.meta.main);
et que vous l'exécutez :
Mais si vous l'importez :
et que vous l'exécutez :
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.
Partager