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

Introducción a Deno: Guía práctica para el desarrollo moderno

Deno, creado por Ryan Dahl (el mismo creador de Node.js), llegó como una alternativa segura y moderna al tiempo de ejecución tradicional de JavaScript.

Introducción a Deno: Guía práctica para el desarrollo moderno

Deno, creado por Ryan Dahl (el mismo creador de Node.js), llegó como una alternativa segura y moderna al tiempo de ejecución tradicional de JavaScript. Lanzado en 2020, Deno presenta soporte nativo para TypeScript, un modelo de permisos restrictivos y un conjunto de herramientas integradas (formateador, linter, ejecutor de pruebas).

¿Por qué elegir Deno?

  • Seguridad por defecto, el proceso no tiene acceso a archivos, red o entorno sin que el desarrollador lo otorgue explícitamente.
  • Soporte nativo para TypeScript, elimina la necesidad de compiladores externos.
  • Módulos ES-M, las importaciones a través de URL simplifican la gestión de dependencias.
  • Las herramientas integradas, deno fmt, deno lint y deno test vienen listas para usar, lo que reduce la dependencia de paquetes externos.

Instalación rápida

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

El script agrega el binario a $PATH.

Estructura de un proyecto Deno

Un proyecto típico de Deno mantiene una organización ajustada. En la raíz están deno.json, que define permisos, opciones de mapa de importación y pelusa, y README.md. El código fuente se encuentra en el directorio src/, con el punto de entrada en main.ts y los módulos auxiliares en archivos como utils.ts. Las pruebas se aíslan en tests/, siguiendo la convención de nombres con sufijo _test.ts, como por ejemplo main_test.ts.

Permisos, el corazón de la seguridad

Al ejecutar un script, debe especificar a qué recursos puede acceder:

PermisoDescripción
--allow-readLectura de archivos o directorios.
--allow-writeEscribir en archivos o directorios.
--allow-netConexiones de red (HTTP, TCP, UDP).
--allow-envAcceso a variables de entorno.
--allow-runEjecución de subprocesos.
--allow-ffiInterfaz de función externa (C).

Ejemplo de ejecución segura

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

El script puede realizar solicitudes HTTP, pero no leer archivos locales.

Módulos ES-M vía URL

Deno te permite importar directamente desde URL públicas:

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

El módulo se almacena en caché en ~/.deno y se puede versionar mediante etiqueta.

Creando un servidor 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 });

El código anterior crea un servidor que responde Olá Deno! en la raíz.

Pruebas integradas

Deno incluye un corredor de pruebas liviano:

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

La prueba puede utilizar assertEquals de la biblioteca estándar.

Ejemplo de prueba (3 líneas)

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

Implementar en producción

  • Docker, la imagen oficial denoland/deno simplifica la implementación.
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 (servicio sin servidor) acepta scripts directamente a través de URL.
  • CI/CD, GitHub Actions con deno lint && deno test && deno fmt --check garantiza calidad.

##Buenas prácticas de seguridad

  1. Permisos mínimos, concede sólo lo necesario (--allow-read=./data).
  2. Lockfile, use deno lock para bloquear las versiones del módulo.
  3. Auditoría de dependencia, verifique las URL externas antes de confiar.
  4. Escaneo de vulnerabilidades, herramientas como trivy pueden analizar la imagen de Docker.

Lista de verificación rápida para iniciar un proyecto Deno

  • [] Instale Deno (rizo o preparación).
  • Crear deno.json con permisos mínimos.
  • Estructura de directorios (src, tests).
  • [] Escribe código usando importaciones a través de URL.
  • [] Agregar pruebas unitarias.
  • [] Configurar CI (lint, test, fmt).
  • Contenedor con Docker o use Deno Deploy.
  • [] Revisar los permisos antes de la implementación.

Conclusión

Deno ofrece un entorno seguro, moderno y listo para producción con menos dependencias externas. Al adoptar sus prácticas de permisos restrictivos, módulos ES-M y herramientas integradas, los desarrolladores pueden acelerar la entrega de aplicaciones sólidas y mantener un alto nivel de seguridad.


¿Cuál es tu experiencia con Deno? ¡Comparte en los comentarios!

Lea también