Deno 2.6 Lanca dx: O Novo npx Que Promete Revolucionar Como Executamos Pacotes
Ola HaWkers, o Deno acaba de lancar a versao 2.6 com uma novidade que vai facilitar a vida de muitos desenvolvedores: o comando dx. Se voce ja usou o npx do Node.js, vai entender imediatamente o proposito, mas com alguns diferenciais importantes.
Voce sabia que executar pacotes diretamente do npm ou JSR pode ser muito mais seguro e eficiente? O dx do Deno traz essa experiencia com as garantias de seguranca que o runtime e conhecido.
O Que e o Deno dx
O dx e a resposta do Deno ao npx. Ele permite executar binarios de pacotes npm e JSR sem precisar instala-los globalmente. Mas vai alem: herda todo o modelo de seguranca do Deno.
Comparacao Rapida
npx (Node.js):
- Baixa e executa pacotes
- Acesso total ao sistema
- Sem restricoes de seguranca
dx (Deno):
- Baixa e executa pacotes
- Permissoes granulares
- Seguranca por padrao
# Usando npx (Node.js)
npx create-react-app meu-app
# Usando dx (Deno)
deno dx create-react-app meu-appA sintaxe e familiar, mas o comportamento por baixo dos panos e diferente.
Como Usar o dx na Pratica
O comando dx funciona tanto com pacotes npm quanto com pacotes JSR (o registry proprio do Deno).
Executando Pacotes npm
# Executar um pacote npm diretamente
deno dx npm:eslint --init
# Executar uma versao especifica
deno dx npm:typescript@5.3.0 --version
# Executar com alias
deno dx npm:prettier --check .Executando Pacotes JSR
# Executar pacote do JSR
deno dx jsr:@std/cli/parse-args
# Executar ferramenta de teste
deno dx jsr:@std/testing/snapshotExemplos Praticos do Dia a Dia
# Iniciar novo projeto Vite
deno dx npm:create-vite@latest meu-projeto
# Rodar o json-server para mock de API
deno dx npm:json-server db.json
# Formatar codigo com Biome
deno dx npm:@biomejs/biome format .
# Gerar documentacao com TypeDoc
deno dx npm:typedoc --entryPoints src/index.ts
Diferenciais de Seguranca
A grande vantagem do dx sobre o npx esta no modelo de seguranca. O Deno nao confia em nenhum codigo por padrao.
Permissoes Granulares
Quando voce executa um pacote com dx, o Deno aplica as mesmas restricoes de qualquer outro codigo:
# Executar com permissao de rede apenas
deno dx --allow-net npm:http-server
# Executar com permissao de leitura em diretorio especifico
deno dx --allow-read=./src npm:eslint ./src
# Executar com permissoes minimas
deno dx --allow-read --allow-write npm:prettier --write .Comparativo de Seguranca
| Aspecto | npx | dx |
|---|---|---|
| Acesso ao filesystem | Total | Requer permissao |
| Acesso a rede | Total | Requer permissao |
| Variaveis de ambiente | Total | Requer permissao |
| Subprocessos | Total | Requer permissao |
| FFI | Permitido | Requer permissao |
Cenario de Risco com npx
Imagine que voce executa um pacote malicioso:
# Com npx - pacote tem acesso total
npx pacote-suspeito
# Pode ler SSH keys, enviar para servidor remoto...
# Com dx - sem permissoes, nada acontece
deno dx npm:pacote-suspeito
# Erro: acesso negado
Outras Novidades do Deno 2.6
O lancamento 2.6 trouxe mais do que apenas o dx. Veja outras melhorias significativas:
deno audit
Agora voce pode auditar vulnerabilidades nas dependencias:
# Verificar vulnerabilidades conhecidas
deno audit
# Saida exemplo:
# Found 2 vulnerabilities:
# - lodash@4.17.20: CVE-2021-23337 (high)
# - axios@0.21.0: CVE-2021-3749 (medium)Permissoes Mais Granulares
O Deno 2.6 introduziu permissoes ainda mais finas:
# Permitir apenas leitura de arquivos .json
deno run --allow-read="*.json" script.ts
# Permitir rede apenas para dominio especifico
deno run --allow-net="api.exemplo.com" script.tsMelhorias no TypeScript
A integracao com tsgo (TypeScript em Go) trouxe:
Ganhos de performance:
- Checagem de tipos 30% mais rapida
- Menor uso de memoria
- Hot reload mais responsivo
Stack Traces Melhorados
Agora os erros sao mais legíveis:
# Antes (Deno 2.5)
Error: Something went wrong
at Object.runMicrotasks (ext:core/01_core.js:456:11)
at processTicksAndRejections (ext:deno_node/_next_tick.ts:65:10)
at async Module._compile (ext:deno_node/module.ts:512:9)
...
# Depois (Deno 2.6)
Error: Something went wrong
at fetchData (src/api.ts:15:5)
at main (src/index.ts:8:3)
dx vs npx vs bunx
Com tres opcoes no mercado, qual escolher?
Comparativo Completo
| Caracteristica | npx | dx | bunx |
|---|---|---|---|
| Velocidade | Moderada | Alta | Muito Alta |
| Seguranca | Baixa | Alta | Baixa |
| Compatibilidade npm | Total | Alta | Alta |
| Cache inteligente | Sim | Sim | Sim |
| Permissoes | Nao | Sim | Nao |
Quando Usar Cada Um
Use npx quando:
- Precisa de compatibilidade total com ecossistema Node
- Esta em projeto legado que depende de Node
- Ferramentas especificas que nao funcionam em Deno
Use dx quando:
- Seguranca e prioridade
- Quer consistencia com projetos Deno
- Precisa de permissoes granulares
Use bunx quando:
- Velocidade e prioridade absoluta
- Projetos que ja usam Bun
- Nao tem restricoes de seguranca
Integracao com Workflows Existentes
O dx se integra bem com ferramentas que voce ja usa.
Scripts no deno.json
{
"tasks": {
"lint": "deno dx npm:eslint src/",
"format": "deno dx npm:prettier --write .",
"test:e2e": "deno dx npm:playwright test",
"docs": "deno dx npm:typedoc --out docs src/"
}
}CI/CD com GitHub Actions
name: CI
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: denoland/setup-deno@v1
with:
deno-version: v2.x
- run: deno dx npm:eslint . --max-warnings 0
- run: deno dx npm:prettier --check .Docker
FROM denoland/deno:2.6.0
WORKDIR /app
COPY . .
# Usar dx para ferramentas de build
RUN deno dx npm:esbuild --bundle src/index.ts --outfile=dist/bundle.js
CMD ["deno", "run", "--allow-net", "dist/bundle.js"]
Migrando do npx Para dx
Se voce quer migrar seus scripts de npx para dx, o processo e simples:
Passo a Passo
1. Identifique os comandos npx no projeto:
# Procurar em package.json e scripts
grep -r "npx " .2. Substitua npx por deno dx npm:
# Antes
npx eslint .
# Depois
deno dx npm:eslint .3. Adicione permissoes necessarias:
# Se o comando precisa ler arquivos
deno dx --allow-read npm:eslint .
# Se precisa de rede
deno dx --allow-net npm:create-react-app my-appTabela de Conversao Comum
| Comando npx | Comando dx |
|---|---|
npx eslint . |
deno dx --allow-read npm:eslint . |
npx prettier --write . |
deno dx --allow-read --allow-write npm:prettier --write . |
npx http-server |
deno dx --allow-net --allow-read npm:http-server |
npx create-vite |
deno dx --allow-read --allow-write --allow-net npm:create-vite |
Conclusao
O dx do Deno 2.6 representa uma evolucao natural na forma como executamos pacotes JavaScript. Mantendo a familiaridade do npx mas adicionando camadas de seguranca, o Deno oferece uma alternativa madura para desenvolvedores que se preocupam com a integridade de seus sistemas.
Se voce ja usa Deno, o dx e uma adicao natural ao seu workflow. Se ainda esta no ecossistema Node, vale experimentar o dx em projetos novos para sentir os beneficios do modelo de seguranca do Deno.
Se voce quer entender mais sobre as diferencas entre os runtimes JavaScript modernos, recomendo dar uma olhada no artigo Anthropic Compra o Bun onde discutimos as recentes mudancas no mercado de runtimes.
Bora pra cima! 🦅
💻 Domine JavaScript de Verdade
O conhecimento que voce adquiriu neste artigo e so o comeco. Ha tecnicas, padroes e praticas que transformam desenvolvedores iniciantes em profissionais requisitados.
Invista no Seu Futuro
Preparei um material completo para voce dominar JavaScript:
Formas de pagamento:
- 1x de R$9,90 sem juros
- ou R$9,90 a vista

