O Deno lê dois arquivos de configuração: o package.json do Node e seu próprio deno.json. Ambos são de primeira classe e ambos são opcionais, então o Deno funciona com qualquer um deles ou com os dois juntos. A regra geral:

  • Use um package.json para dependências e scripts. O Deno o lê diretamente, então a maioria dos projetos Node.js roda sem mudanças e você não precisa de um deno.json.
  • Adicione um deno.json quando quiser configurar as próprias ferramentas do Deno, como o formatter, linter, compilador TypeScript ou tasks.

package.json

O Deno tem suporte de primeira classe a package.json. Aponte o Deno para um projeto Node.js existente e ele resolve as mesmas dependências npm do package.json e executa os scripts do projeto com deno task, sem deno.json e sem etapa de conversão:

deno install        # install the dependencies from package.json
deno task <script>  # run a script defined in package.json

Um package.json configura as dependências e scripts do seu projeto, mas não configura o próprio Deno. Configurações específicas do Deno, como formatter, linter, opções do compilador TypeScript e comportamento do lockfile, ficam apenas no deno.json. Quando os dois arquivos estão presentes, o Deno lê dependências de cada um e usa sua própria configuração a partir do deno.json.

É isso que permite adotar o Deno de forma incremental: continue rodando um app no Node enquanto usa o Deno como um gerenciador de pacotes drop-in mais rápido, execute seus scripts existentes com deno task e adicione um deno.json para o toolchain do Deno quando estiver pronto. O guia Migrar do Node.js percorre cada etapa, e compatibilidade com Node no Deno cobre como o runtime mapeia APIs e resolução de módulos do Node.

deno.json

deno.json é onde você configura o próprio Deno: tasks, dependências e ferramentas como o compilador TypeScript, linter e formatter. Ele é opcional; um arquivo mínimo se parece com isto:

{
  "tasks": {
    "dev": "deno run --watch main.ts"
  },
  "imports": {
    "@std/assert": "jsr:@std/assert@^1"
  },
  "fmt": {
    "lineWidth": 100
  }
}

Ele aceita extensões .json e .jsonc, então com deno.jsonc você pode adicionar comentários e vírgulas finais.

O Deno detecta automaticamente um arquivo deno.json ou deno.jsonc no seu diretório de trabalho atual ou em qualquer diretório pai, o que faz as configurações de um projeto se aplicarem a todos os arquivos abaixo dele. Use a flag --config para apontar para outro arquivo. Em um monorepo, um deno.json raiz pode definir um workspace cujos membros têm seu próprio deno.json.

O que você pode configurar

Um arquivo deno.json configura o toolchain do Deno e seu projeto. Cada campo é documentado na referência do arquivo de configuração (deno.json), incluindo:

Veja a referência para um exemplo completo de arquivo deno.json e o JSON schema para autocomplete no editor.