스크립트
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 !
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기