Deno
JavaScript
TypeScript
Runtime
Segurança
Permissões
Deploy
CLI
Modules
Web APIs

Introduction à Deno : guide pratique pour le développement moderne

Deno, créé par Ryan Dahl (le même créateur de Node.js), est arrivé comme une alternative sécurisée et moderne au runtime JavaScript traditionnel.

Introduction à Deno : guide pratique pour le développement moderne

Deno, créé par Ryan Dahl (le même créateur de Node.js), est arrivé comme une alternative sécurisée et moderne au runtime JavaScript traditionnel. Lancé en 2020, Deno propose une prise en charge native de TypeScript, un modèle d'autorisations restrictives et un ensemble d'outils intégrés (formatter, linter, test runner).

Pourquoi choisir Deno ?

  • Sécurité par défaut, le processus n'a pas accès aux fichiers, au réseau ou à l'environnement sans l'accord explicite du développeur.
  • Prise en charge native de TypeScript, élimine le besoin de compilateurs externes.
  • Modules ES-M, les importations via des URL simplifient la gestion des dépendances.
  • Les outils intégrés, deno fmt, deno lint et deno test sont livrés prêts à l'emploi, réduisant ainsi la dépendance à l'égard de packages externes.

##Installation rapide

curl -fsSL https://deno.land/x/install/install.sh | sh ## ou via Homebrew brew install deno

Le script ajoute le binaire à $PATH.

Structure d'un projet Deno

Un projet Deno typique maintient une organisation allégée. À la racine se trouvent deno.json, qui définit les autorisations, les options d'importation-carte et de lint, et README.md. Le code source se trouve dans le répertoire src/, avec le point d'entrée en main.ts et les modules d'assistance dans des fichiers comme utils.ts. Les tests sont isolés en tests/, suivant la convention des noms avec un suffixe _test.ts, tel que main_test.ts.

Les autorisations, le cœur de la sécurité

Lors de l'exécution d'un script, vous devez spécifier à quelles ressources il peut accéder :

AutorisationDescriptif
--allow-readLecture de fichiers ou de répertoires.
--allow-writeÉcriture dans des fichiers ou des répertoires.
--allow-netConnexions réseau (HTTP, TCP, UDP).
--allow-envAccès aux variables d'environnement.
--allow-runExécution de sous-processus.
--allow-ffiInterface de fonction étrangère (C).

Exemple d'exécution sécurisée

deno run --allow-net src/main.ts

Le script peut effectuer des requêtes HTTP, mais pas lire les fichiers locaux.

Modules ES-M via URL

Deno vous permet d'importer directement à partir d'URL publiques :

import { serve } from "https://deno.land/std@0.203.0/http/server.ts";

Le module est mis en cache dans ~/.deno et peut être versionné via une balise.

Création d'un serveur HTTP simple

import { serve } from "https://deno.land/std@0.203.0/http/server.ts"; const handler = (request: Request): Response => { const url = new URL(request.url); if (url.pathname === "/") { return new Response("Olá Deno!", { status: 200 }); } return new Response("Not Found", { status: 404 }); }; serve(handler, { port: 8000 });

Le code ci-dessus crée un serveur qui répond Olá Deno! à la racine.

Tests intégrés

Deno comprend un programme d'exécution de test léger :

denon test --allow-net tests/main_test.ts

Le test peut utiliser assertEquals de la bibliothèque standard.

Exemple de test (3 lignes)

import { assertEquals } from "https://deno.land/std@0.203.0/testing/asserts.ts"; Deno.test("soma", () => assertEquals(2 + 2, 4));

Déployer en production

  • Docker, image officielle denoland/deno simplifie le déploiement.
FROM denoland/deno:alpine-1.38.0 WORKDIR /app COPY . . RUN deno cache src/main.ts EXPOSE 8000 CMD ["run", "--allow-net", "src/main.ts"]
  • Edge, Deno Deploy (service serverless) accepte les scripts directement via URL.
  • CI/CD, GitHub Actions avec deno lint && deno test && deno fmt --check garantit la qualité.

Bonnes pratiques de sécurité

  1. Autorisations minimales, accordez uniquement ce qui est nécessaire (--allow-read=./data).
  2. Lockfile, utilisez deno lock pour verrouiller les versions du module.
  3. Audit de dépendance, vérifiez les URL externes avant de faire confiance.
  4. Analyse des vulnérabilités, des outils comme trivy peuvent analyser l'image Docker.

Liste de contrôle rapide pour démarrer un projet Deno

  • Installez Deno (curl ou Brew).
  • Créez deno.json avec des autorisations minimales.
  • Répertoires de structure (src, tests).
  • Écrivez du code en utilisant les importations via URL.
  • Ajouter des tests unitaires.
  • Configurer CI (lint, test, fmt).
  • Conteneurisez avec Docker ou utilisez Deno Deploy.
  • Vérifiez les autorisations avant le déploiement.

Conclusion

Deno offre un environnement sécurisé, moderne et prêt pour la production avec moins de dépendances externes. En adoptant ses pratiques d'autorisations restrictives, ses modules ES-M et ses outils intégrés, les développeurs peuvent accélérer la fourniture d'applications robustes et maintenir un niveau de sécurité élevé.


Quelle est votre expérience avec Deno ? Partagez dans les commentaires !

A lire aussi