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.
Sommaire
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 avecdeno run
. - Références circulaires dans
console.log
– Les objets contenant des références circulaires sont maintenant clairement affichés dansconsole.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
API –Deno.File
est maintenantDeno.FsFile
pour éviter toute confusion avec la normeFile
API Web. Vous devriez mettre à jourDeno.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.