Quoi de neuf dans Deno 1.19 ?  – Informatique CloudSavvy
Agence web » Actualités du digital » Quoi de neuf dans Deno 1.19 ? – Informatique CloudSavvy

Quoi de neuf dans Deno 1.19 ? – Informatique CloudSavvy

Deno 1.19 a été publié en février 2022 en tant que dernière mise à jour incrémentielle pour le runtime JavaScript sécurisé par conception. Parmi les changements figurent une expérience de gestion des autorisations rationalisée, une prise en charge de premier ordre des dépendances des fournisseurs et de nouveaux flux Web natifs pour les fichiers, les sockets réseau et les entrées et sorties standard.

Dans cet article, nous examinerons les principaux ajouts et améliorations qui modifieront votre utilisation de Deno. Vous pouvez obtenir des informations complètes sur la version à partir du journal des modifications sur le blog Deno.

Invites d’autorisation

L’un des principaux objectifs de Deno est d’offrir un environnement JavaScript plus sécurisé que les alternatives comme Node.js. Son modèle d’autorisations strictes empêche les programmes d’accéder à des fonctionnalités telles que le réseau, le système de fichiers et l’environnement hôte à moins que l’utilisateur n’accorde explicitement l’accès.

Dans les versions précédentes de Deno, vous deviez fournir des indicateurs de ligne de commande tels que --allow-net (autoriser la mise en réseau) et --allow-read (autoriser les lectures du système de fichiers) pour accorder ces autorisations. le --prompt flag a été proposé comme alternative, énumérant chaque autorisation sous la forme d’une invite CLI interactive à laquelle vous devez répondre y ou n pour.

Dans Deno v1.19, le --prompt l’indicateur est automatiquement inclus lorsque vous omettez des informations spécifiques --allow- options. Cela permet de démarrer plus rapidement des applications nécessitant plusieurs autorisations. Vous n’avez pas besoin de les mémoriser individuellement ou de spécifier --prompt chaque fois.

Vous pouvez utiliser le --no-prompt flag pour désactiver complètement les invites d’autorisation interactives. Cela reste le mode par défaut lorsque Deno fonctionne sans TTY.

Flux Web natifs

Deno utilise désormais native ReadableStream et WritableStream instances pour ses flux de fichiers, de mise en réseau et de stdio. L’adoption de flux Web pour ces fonctions améliore l’interopérabilité entre les API et d’autres environnements d’exécution tels que les navigateurs Web. Par exemple, vous pouvez désormais diffuser des données réseau directement vers un fichier ou une sortie standard :

const file = await Deno.create("./data.txt");
const networkResponse = await fetch("https://example.com/data.txt");
await networkResponse.body.pipeTo(file.writable);

Chaque flux readable et writable Les propriétés font référence aux instances de flux Web. Ceux-ci peuvent être librement transmis entre les API de support, ce qui rend le code asynchrone complexe clair et lisible. L’utilisation des flux Web s’étend au composant serveur de Deno, vous permettant de diriger les données diffusées en continu dans vos réponses HTTP.

Compression de flux simple

Streams a également gagné deux nouveaux transformateurs, CompressionStream et DecompressionStream. Ceux-ci simplifient la compression et la décompression des données passant par les flux. Deno a implémenté les API standardisées qui fonctionnent déjà dans Chrome et Opera. D’autres navigateurs devraient ajouter la prise en charge à l’avenir.

const decompressed = await Deno.open("./file.txt");
const compressed = await Deno.open("./file.txt.gz");
await decompressed.readable
	.pipeThrough(new CompressionStream("gz"))
	.pipeTo(compressed.writable);

Les transformateurs supportent actuellement gzip et deflate-données formatées. Il existe une proposition de communauté ouverte pour étendre l’API avec brotli compression aussi.

Dépendances du fournisseur

Une grande nouvelle fonctionnalité de la version est les dépendances des fournisseurs. Deno fournit désormais un mécanisme pour les dépendances des fournisseurs dans le cadre de votre propre code source. Il supprime la solution de contournement désordonnée de commettre DENO_DIR à votre référentiel juste pour que vous puissiez apporter des modifications aux fichiers fournis par des modules externes.

Les dépendances des fournisseurs donnent à Deno quelque chose de similaire à Node.js node_modules annuaire. La vente d’un module convertit les fichiers opaques en DENO_DIR dans une arborescence de dépendances sur disque où les noms de fichiers ressemblent aux noms de module d’origine.

Le nouveau deno vendor télécharge les dépendances distantes des modules spécifiés dans un local vendor annuaire:

deno vendor main.ts

Le répertoire comprendra un import_map.json que vous pouvez passer à Deno’s --import-map flag lorsque vous exécutez votre source. Cela demandera à Deno de résoudre les dépendances à l’aide des modules téléchargés. Ajout de la --no-remote flag désactive complètement le chargement du module à distance, garantissant que les dépendances du fournisseur seront utilisées sans exception.

deno run --no-remote --import-map=vendor/import_map.json main.ts

Un bon cas d’utilisation de cette fonctionnalité est lorsque vous souhaitez distribuer du code fournisseur avec votre propre source. C’est également pratique pour le débogage lorsque vous devez injecter des instructions de journalisation dans une dépendance. Vous pouvez vendre le module cible pour parcourir et modifier facilement ses fichiers source. Une fois que vous avez terminé, retirez le vendor répertoire pour revenir au système de chargement de module normal.

Expérience de développement améliorée

D’autres nouvelles améliorations améliorent l’expérience du développeur et les outils de débogage de Deno. Voici quelques-uns des changements dont vous pouvez bénéficier :

  • Compilation plus fiable – Le deno compile La commande sérialise votre graphique de dépendance directement dans le binaire final. Cela supprime l’étape de regroupement utilisée dans les anciennes versions de Deno, garantissant que l’ordre d’exécution du code reste correct. Les binaires compilés doivent se comporter de manière plus prévisible et être cohérents avec deno run.
  • Références circulaires dans console.log – Les objets contenant des références circulaires sont maintenant clairement affichés dans console.log sortir. Chaque référence comprend un indicateur de l’objet cible et le nombre de cercles de l’itération en cours.
  • Enregistrez facilement les rapports de couverture – Le deno coverage rapport a gagné un --output drapeau qui peut être utilisé pour envoyer la sortie directement dans un fichier (deno coverage --lcov --output=coverage.lcov coverage/). Auparavant, vous deviez utiliser la redirection du shell pour diriger manuellement la sortie standard de la commande dans des fichiers.
  • Désactiver les effacements de la console de l’observateur de fichiers – Deno’s --watch drapeau utilisé pour effacer la console à chaque redémarrage du processus en cours. Ce comportement peut maintenant être désactivé avec le --no-clear-screen drapeau. Il vous permet de conserver la sortie de la console après la modification des fichiers.
  • Ambiguïté réduite dans le Deno.File APIDeno.File est maintenant Deno.FsFile pour éviter toute confusion avec la norme File API Web. Vous devriez mettre à jour Deno.File références à la nouvelle variante pour qu’il soit explicite que vous accédez aux ressources du système de fichiers local. Deno.File reste utilisable avec des avertissements de dépréciation jusqu’à Deno v2.

Il existe également de nouvelles API instables pour obtenir l’ID utilisateur système du processus en cours d’exécution et découvrir les interfaces réseau disponibles. L’API sockets Unix instable existante peut désormais être utilisée pour servir du contenu HTTP. Enfin, l’API des auditeurs de signal pour s’abonner aux signaux du système comme SIGINT et SIGTERM a été promu au statut stable.

Mise à niveau

Vous pouvez mettre à niveau vers la nouvelle version en exécutant le deno upgrade commander. Cela téléchargera automatiquement la dernière version, la décompressera et écrasera votre installation actuelle de Deno. Vous pouvez revenir à la v1.18 si vous avez besoin d’utiliser deno upgrade --version 1.18.2.

Sommaire

Deno v1.19 est une autre version saine pour l’environnement d’exécution JavaScript et TypeScript. Il rationalise plusieurs aspects de l’expérience de développement, allant de la gestion des flux à la deno utilitaires de ligne de commande.

La version augmente également le temps d’exécution du V8 jusqu’à 9.9. Cela ajoute de nouvelles fonctionnalités d’internalisation, y compris plus de propriétés sur le Intl.Locale objet et un Intel.supportedValuesOf() fonction pour vérifier si des composants spécifiques sont disponibles. Vous pouvez désormais utiliser ces fonctionnalités dans vos programmes Deno.