Lançamento do Deno 2.0 - Grande Melhoria na Compatibilidade com Node.js

2025.12.18

Deno 2.0 Finalmente Lançado

Em outubro de 2024, o Deno 2.0 foi oficialmente lançado. A compatibilidade com Node.js foi significativamente melhorada, aumentando drasticamente sua praticidade. O Deno, que Ryan Dahl criou “aplicando as lições aprendidas com o Node.js”, finalmente se tornou uma opção viável.

O que é Deno: Um runtime JavaScript/TypeScript desenvolvido por Ryan Dahl, criador do Node.js. Suas características incluem segurança, suporte nativo a TypeScript e APIs modernas baseadas em padrões web.

Principais Novas Funcionalidades

1. Compatibilidade Total com npm

Agora é possível usar pacotes npm diretamente. Você pode importar diretamente usando o esquema npm:.

// Importar pacotes npm diretamente
import express from "npm:express@4";
import { z } from "npm:zod";

const app = express();
app.get("/", (req, res) => {
    res.json({ message: "Hello from Deno!" });
});

app.listen(3000);

A maioria dos pacotes npm funciona, facilitando a migração do Node.js.

2. Suporte a package.json

Se houver um package.json, você pode usar npm install e node_modules como de costume.

# Executar projeto Node.js existente com Deno
deno run --allow-net --allow-read app.js

# Também é possível executar scripts do package.json
deno task start

3. Introdução de LTS (Long Term Support)

Versões LTS foram introduzidas visando a adoção empresarial. O suporte de longo prazo para versões estáveis torna o uso em produção mais realista.

4. Workspaces e Gerenciamento de Múltiplos Projetos

Suporte para estrutura monorepo. Você pode definir workspaces no deno.json.

// deno.json
{
  "workspace": ["./packages/api", "./packages/web", "./packages/shared"]
}

5. Publicação de Pacotes via JSR

O JSR (JavaScript Registry) foi lançado. Você pode publicar TypeScript diretamente e distribuir pacotes que funcionam tanto no npm quanto no Deno.

// Importação do JSR
import { assertEquals } from "jsr:@std/assert";

// Publicar é simples
// deno publish

Modelo de Segurança

O modelo de segurança, uma grande característica do Deno, também evoluiu.

# Permitir explicitamente apenas as permissões necessárias
deno run --allow-net=api.example.com --allow-read=./data app.ts

# Permitir todas as permissões (recomendado apenas para desenvolvimento)
deno run -A app.ts
Flag de PermissãoDescrição
--allow-netAcesso à rede
--allow-readLeitura de arquivos
--allow-writeEscrita de arquivos
--allow-envAcesso a variáveis de ambiente
--allow-runExecução de subprocessos

Ferramentas de Desenvolvimento Completas

O Deno 2.0 também melhorou significativamente a experiência de desenvolvimento.

Ferramentas Integradas

# Formatador
deno fmt

# Linter
deno lint

# Executor de testes
deno test

# Benchmark
deno bench

# Geração de documentação
deno doc

# Bundler
deno compile  # Gera um único executável

TypeScript Nativo

TypeScript funciona diretamente sem configuração. Não há necessidade de se preocupar com configurações do tsconfig.json.

// app.ts - Pode ser executado diretamente
interface User {
    id: number;
    name: string;
}

const user: User = { id: 1, name: "Tanaka" };
console.log(user);

Comparação com Node.js

FuncionalidadeDeno 2.0Node.js
TypeScriptSuporte nativoRequer transpilador
SegurançaControle explícito de permissõesTodas as permissões por padrão
Gerenciamento de pacotesURL/npm/jsrnpm
Arquivos de configuraçãoMínimosMuitos necessários
APIs padrão webSuporte padrão a fetch, etc.Adicionado a partir da v18
EcossistemaEm rápido crescimentoGrande e maduro

Status de Suporte a Frameworks

Status de suporte ao Deno pelos principais frameworks.

  • Fresh: Framework full-stack oficial do Deno (Islands Architecture)
  • Hono: Framework web de alta velocidade (suporte total ao Deno)
  • Oak: Framework de middleware estilo Express
  • Express: Funciona via compatibilidade npm
  • Next.js: Suporte parcial
// Exemplo com Hono
import { Hono } from "npm:hono";

const app = new Hono();

app.get("/", (c) => c.json({ message: "Hello Hono!" }));

Deno.serve(app.fetch);

Conclusão

O Deno 2.0 se tornou uma opção prática com a grande melhoria na compatibilidade com Node.js. Possui muitas vantagens como segurança, TypeScript nativo e APIs modernas. Vale a pena considerar ativamente para novos projetos ou projetos que priorizam segurança.

← Voltar para a lista