Bun 1.4 vient de supprimer 15 de vos dépendances

BBetter Stack
Computing/SoftwareInternet Technology

Transcript

00:00:00La mise à jour la plus importante et la plus controversée de Bun vient de tomber : Bun 1.4, réécrit en Rust.
00:00:04J'ai déjà fait une vidéo sur le drame de cette réécriture, alors concentrons-nous sur les nouveautés.
00:00:07Car certaines me plaisent vraiment, en particulier celles de la bibliothèque standard.
00:00:11Elle intègre désormais un navigateur headless, une bibliothèque d'images, un pseudo-terminal, du Markdown.
00:00:15des tâches cron, des tableaux, et bien plus encore, remplaçant 15 dépendances que vous utilisez peut-être.
00:00:19Ces dernières années, l'un des plus grands reproches faits à JavaScript était l'absence de bibliothèque.
00:00:23standard, et Bun y remédie. C'est une excellente initiative à l'ère des attaques de la chaîne d'approvisionnement hebdomadaires.
00:00:30Tout d'abord, nous pouvons désinstaller Playwright et Puppeteer pour utiliser Bun WebView à la place.
00:00:37Avec ce code, je peux piloter un navigateur headless, trouver le bouton s'abonner et cliquer dessus.
00:00:41Bien que je ne puisse pas encore l'exécuter sur votre machine, vous allez devoir le faire vous-même.
00:00:44Toutes les méthodes de saisie comme le clic, la frappe et le défilement envoient de vrais événements du navigateur.
00:00:48La page pensera donc que vous êtes un vrai utilisateur. Sur Mac, cela utilise WebKit, le moteur.
00:00:52de Safari, ce qui signifie qu'il n'y a rien à installer. Mais si vous préférez une instance Chrome.
00:00:56vous pouvez définir l'option backend sur Chrome, ce qui utilisera une instance de Chrome ou de Chromium installée,
00:01:01ce qui est pratique sous Windows ou Linux. Cela peut exécuter un sous-processus Chrome headless.
00:01:04ou se connecter à une instance de Chrome déjà en cours d'exécution. Grâce à ce code ici.
00:01:09je peux contrôler la version ouverte de Chrome sur mon Mac, entièrement depuis Bun. En plus de cela.
00:01:13vous pouvez utiliser Evaluate pour exécuter du JavaScript sur la page et récupérer les résultats.
00:01:17sous forme de valeurs JavaScript natives. Et s'il manque une API pour une fonctionnalité souhaitée.
00:01:21vous pouvez basculer sur les commandes CDP brutes. C'est idéal pour quelques automatisations légères.
00:01:25Je ne pense pas que cela remplace totalement Playwright pour l'instant, il n'y a pas de lanceur de tests.
00:01:29mais pour du scraping ou des scripts de contrôle, ce n'est pas une mauvaise option.
00:01:32Ensuite, désinstallons Sharp et utilisons Bun.image à la place. C'est une bibliothèque complète.
00:01:37qui permet de prendre un fichier, d'appeler .image dessus, puis d'enchaîner des opérations comme le redimensionnement.
00:01:42la rotation, le retournement, le réglage de la luminosité, de la netteté et la conversion.
00:01:46dans divers formats d'image. Cela permet aussi de lire les métadonnées, comme la largeur, la hauteur.
00:01:50et le format, sans décoder les pixels. Une autre option très appréciable est la possibilité.
00:01:54de créer une image de substitution, une version basse qualité à inclure en HTML avant que la vraie image ne charge.
00:01:59Bun.image fait partie des fonctionnalités qui m'enthousiasment le plus, car j'ai déjà eu des problèmes.
00:02:04de déploiement et de build liés à Sharp. Désormais, avec Bun, je n'ai plus à y penser.
00:02:08Je n'ai plus à me soucier de Marked non plus, car nous pouvons utiliser Bun.markdown pour l'analyse.
00:02:12Il y a trois API principales. Bun.markdown.html convertit le Markdown en chaîne HTML.
00:02:16Bun.markdown.render le rend avec des rappels personnalisés pour chaque élément.
00:02:22Cela offre la flexibilité de générer du HTML avec des classes personnalisées.
00:02:27une sortie de terminal ANSI ou tout autre format. Bun.markdown.react génère du JSX pour React.
00:02:33ce qui permet aussi de passer le composant de votre choix pour chaque élément, pour obtenir un style soigné.
00:02:37Plusieurs options permettent de contrôler les fonctionnalités Markdown souhaitées.
00:02:41Vous pouvez activer les tableaux au format GitHub, les liens automatiques, les identifiants de titres.
00:02:45et les liens wiki, bien qu'un avertissement soit de mise : la sortie HTML n'est pas aseptisée.
00:02:50Le HTML brut, les attributs d'événements et le JavaScript passent directement. Si vous affichez du Markdown.
00:02:54rédigé par des utilisateurs, cela reste un problème que vous devez résoudre. Quoi qu'il en soit, au vu.
00:02:59de la quantité de Markdown générée de nos jours, c'est un très bel ajout.
00:03:03Ensuite, vous pouvez désinstaller Node.pty. Bun.terminal intègre un pseudo-terminal pour piloter.
00:03:08Bash, Vim ou HTOP depuis JavaScript. Si vous avez déjà tenté d'inclure un terminal dans une application Electron.
00:03:12vous connaissez la galère. C'est en fait un ajout à Bun.spawn. Passez-lui l'option terminal.
00:03:17et cela lance un sous-processus avec un pseudo-terminal. Le processus y voit un vrai terminal.
00:03:22ce qui permet la sortie en couleur, les mouvements de curseur et les invites interactives.
00:03:26Une fois en place, vous pouvez y écrire des données, redimensionner, fermer le terminal et bien plus encore.
00:03:31Vous pouvez aussi créer votre propre terminal pour le réutiliser entre les sous-processus.
00:03:35Je commence à voir une logique derrière tout cela. Ce sont des choses que Claude Code utiliserait.
00:03:39J'aimerais qu'ils le mettent en open-source pour voir ces fonctions à grande échelle.
00:03:43La dépendance suivante à désinstaller est Node.cron, car nous avons désormais Bun.cron.
00:03:47Si vous lui passez une fonction, elle s'exécutera dans la boucle d'événements sans cron système.
00:03:51mais si vous lui passez un script, il enregistrera une tâche cron au niveau de l'OS via crontab.
00:03:56sur Linux, launchd sur macOS et le planificateur de tâches sur Windows. Vous pouvez utiliser la syntaxe cron.
00:04:01standard, incluant les jours et des aides comme daily, et analyser cette syntaxe pour obtenir.
00:04:05la prochaine date correspondante dans le fuseau horaire local. Et en parlant de fuseaux horaires.
00:04:11les tâches s'exécutent par défaut en heure locale, avec des options pour modifier cela explicitement.
00:04:15Ensuite, je vous conseille de désinstaller concurrently ou npm run all, car Bun propose une option parallèle.
00:04:20Ce drapeau permet d'exécuter plusieurs scripts package.json en même temps.
00:04:24La sortie est préfixée par le nom du script source. Il autorise aussi la correspondance de motifs.
00:04:28avec des filtres pour cibler les paquets de votre espace de travail où lancer la commande.
00:04:32ainsi qu'une option pour que les autres scripts continuent si l'un d'eux échoue. Ce n'est pas tout.
00:04:37vous pouvez aussi utiliser sequential pour exécuter les scripts un par un avec le même préfixe.
00:04:41C'est probablement la fonctionnalité que je vais le plus utiliser. Notre prochaine suppression.
00:04:45concerne les bibliothèques d'archives tar. Bun.archive est une implémentation native et rapide de tar et gzip.
00:04:50En créer une se résume à un objet dont les clés sont les chemins et les valeurs les contenus.
00:04:55Le contenu peut être une chaîne, un blob, un Uint8Array ou un array buffer. Pour la compression.
00:05:00vous pouvez utiliser l'option compress réglée sur gzip avec un niveau de 1 à 12.
00:05:05Bien sûr, vous pouvez les extraire avec des motifs glob pour cibler des fichiers précis.
00:05:10Et j'aime beaucoup le fait de pouvoir lire une archive sans l'extraire. Ce code permet de récupérer lodash.
00:05:14depuis le registre npm et de lire son package.json sans extraire le moindre fichier.
00:05:19Jusqu'ici, nous avons éliminé environ 7 paquets npm, et il en reste encore, bien que plus petits.
00:05:24Premièrement, Bun.serve peut maintenant servir des fichiers statiques, remplaçant serve-static.
00:05:28C'est idéal pour le dossier public de votre site. Deuxièmement, Bun prend en charge JSON5 et XML.
00:05:33Vous n'avez plus besoin de leurs paquets. Vous pouvez importer, analyser et sérialiser les deux formats dans Bun.
00:05:38Les trois derniers sont des utilitaires pour le terminal : Bun.sliceAnsi, Bun.wrapAnsi.
00:05:43et Bun.stringWidth, qui gèrent le découpage, le retour à la ligne et la mesure en tenant compte.
00:05:47des colonnes, remplaçant slice-ansi, cli-truncate, wrap-ansi et string-width.
00:05:52Globalement, cela fait environ 15 paquets en moins, et je n'ai couvert que la moitié de cette version.
00:05:56En résumé, beaucoup de choses sont devenues plus rapides, l'usage CPU s'est amélioré, le démarrage est plus prompt.
00:06:01et malgré toutes ces fonctionnalités, le binaire est 17 % plus léger. Ah, et il est écrit en Rust.
00:06:06Une fonctionnalité bonus à noter : Bun.install intègre un magasin virtuel global.
00:06:10Si vous activez l'éditeur de liens isolé, les paquets sont extraits une seule fois sur votre machine.
00:06:14et liés par lien symbolique à vos node_modules, au lieu d'être copiés séparément dans chaque projet.
00:06:19Cela accélère les choses et économise de l'espace si vous avez beaucoup de projets. Que pensez-vous de Bun maintenant ?
00:06:23L'utilisez-vous ? Allez-vous utiliser ces nouveautés ? Dites-le-moi dans les commentaires ci-dessous.
00:06:27Attendez, abonnez-vous, et comme toujours, à la prochaine !
00:06:36À la prochaine !

Key Takeaway

Bun 1.4 intègre quinze nouvelles fonctionnalités natives pour remplacer les dépendances externes courantes et alléger les projets JavaScript.

Highlights

  • Bun 1.4 intègre un navigateur headless basé sur WebKit ou Chrome, remplaçant Playwright et Puppeteer.

  • La bibliothèque Bun.image prend en charge le redimensionnement, la rotation, la conversion et la lecture de métadonnées sans décoder les pixels, remplaçant Sharp.

  • Bun.markdown propose l'analyse de fichiers Markdown avec des options pour le HTML, JSX et les scripts personnalisés.

  • Bun.terminal intègre un pseudo-terminal pour piloter Bash, Vim ou HTOP directement depuis JavaScript sans Node.pty.

  • Bun.cron gère les tâches planifiées via la boucle d'événements ou le système d'exploitation sans dépendance externe.

  • Le binaire de Bun 1.4 est 17 pour cent plus léger malgré l'ajout de ces fonctionnalités natives.

Timeline

Nouveautés de la bibliothèque standard et navigateur headless

  • Bun 1.4 est réécrit en Rust et intègre de nouvelles bibliothèques standard.
  • Bun WebView remplace Playwright et Puppeteer pour piloter un navigateur headless.
  • Le moteur WebKit est utilisé par défaut sur Mac, avec une option pour Chrome sous Windows ou Linux.

La mise à jour majeure de Bun s'attaque à l'absence de bibliothèque standard en JavaScript pour réduire la dépendance envers des paquets tiers. Bun WebView permet d'exécuter des actions de navigation, des clics et de la saisie de texte en envoyant de vrais événements. Les utilisateurs peuvent basculer sur des commandes CDP brutes ou exécuter du JavaScript directement sur la page.

Manipulation d'images et analyse Markdown natives

  • Bun.image remplace la bibliothèque Sharp pour la manipulation d'images.
  • Bun.markdown gère la conversion de Markdown en HTML, en JSX pour React ou en texte brut.

La gestion des images devient native grâce à Bun.image, qui permet de redimensionner, pivoter, convertir et lire les métadonnées des fichiers sans décoder les pixels. Pour le texte, Bun.markdown fournit trois API principales pour transformer le contenu en HTML, en sortie ANSI ou en composants React avec un style personnalisé.

Pseudo-terminal, tâches cron et exécution de scripts

  • Bun.terminal intègre un pseudo-terminal pour contrôler Bash, Vim ou HTOP.
  • Bun.cron exécute des tâches planifiées sans utiliser Node.cron.
  • Le paramètre parallèle permet d'exécuter plusieurs scripts package.json simultanément.

Bun.terminal simplifie l'intégration d'un terminal dans des applications en lançant un sous-processus avec support des couleurs et des invites interactives. Bun.cron prend en charge la syntaxe standard pour exécuter des fonctions dans la boucle d'événements ou s'enregistrer auprès de l'OS. De plus, l'exécution de scripts en parallèle remplace des outils comme concurrently.

Gestion des archives, fichiers statiques et formats de données

  • Bun.archive offre une implémentation native et rapide des formats tar et gzip.
  • Bun.serve prend en charge le service de fichiers statiques sans paquet supplémentaire.
  • Bun 1.4 intègre le support pour JSON5, XML et des utilitaires de terminal pour la gestion des chaînes ANSI.

Bun.archive permet de créer et d'extraire des archives tar, ainsi que de lire un fichier spécifique comme un package.json distant sans extraire toute l'archive. La mise à jour élimine également le besoin de bibliothèques pour JSON5, XML et les manipulations de texte dans le terminal, tout en réduisant le poids du binaire et en améliorant l'utilisation du CPU.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video