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 lintetdeno testsont 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 :
| Autorisation | Descriptif |
|---|---|
--allow-read | Lecture de fichiers ou de répertoires. |
--allow-write | Écriture dans des fichiers ou des répertoires. |
--allow-net | Connexions réseau (HTTP, TCP, UDP). |
--allow-env | Accès aux variables d'environnement. |
--allow-run | Exécution de sous-processus. |
--allow-ffi | Interface 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
~/.denoet 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
assertEqualsde 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/denosimplifie 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 --checkgarantit la qualité.
Bonnes pratiques de sécurité
- Autorisations minimales, accordez uniquement ce qui est nécessaire (
--allow-read=./data). - Lockfile, utilisez
deno lockpour verrouiller les versions du module. - Audit de dépendance, vérifiez les URL externes avant de faire confiance.
- Analyse des vulnérabilités, des outils comme
trivypeuvent analyser l'image Docker.
Liste de contrôle rapide pour démarrer un projet Deno
- Installez Deno (curl ou Brew).
- Créez
deno.jsonavec 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
- TypeScript pour applications : Guide de développement TypeScript
- Cloudflare Workers : Guide pratique de l'informatique de périphérie sans serveur
- Autorisation et permissions dans les applications : Contrôle d'accès sécurisé -Autorisation et permissions - Principes fondamentaux des meilleures pratiques
- Advanced TypeScript : Maîtriser les types complexes, les génériques et les types utilitaires
- Développement Web moderne en 2025 : tendances, outils et stratégies innovantes
