O Deno tem um file watcher integrado, então você não precisa de nodemon nem de nenhuma outra ferramenta externa para recarregar seu programa enquanto edita. Esta página cobre o que é observado, como excluir caminhos e hot module replacement.

Watch mode

Você pode fornecer a flag --watch para deno run, deno test e deno fmt para ativar o file watcher integrado. O watcher habilita o recarregamento automático da sua aplicação sempre que mudanças são detectadas nos arquivos de código-fonte. Isso é especialmente útil durante o desenvolvimento, pois permite ver os efeitos das suas mudanças imediatamente sem reiniciar manualmente a aplicação.

deno run --watch main.ts
deno test --watch
deno fmt --watch

Os arquivos observados dependem do subcomando usado:

  • para deno run e deno test, o entrypoint e todos os arquivos locais que o entrypoint importa estaticamente serão observados.
  • para deno fmt, todos os arquivos e diretórios locais especificados como argumentos de linha de comando (ou o diretório de trabalho, se nenhum arquivo ou diretório específico for passado) são observados.

Você pode excluir caminhos ou padrões da observação fornecendo a flag --watch-exclude. A sintaxe é --watch-exclude=path1,path2. Por exemplo:

deno run --watch --watch-exclude=file1.ts,file2.ts main.ts

Isso excluirá file1.ts e file2.ts da observação.

Para excluir um padrão, lembre-se de colocá-lo entre aspas para impedir que seu shell expanda o glob:

deno run --watch --watch-exclude='*.js' main.ts

Hot module replacement

deno run também oferece suporte à flag --watch-hmr, que substitui a quente os módulos alterados no processo em execução em vez de reiniciá-lo. Isso preserva o estado da sua aplicação entre edições. Se a substituição a quente falhar, o processo volta para uma reinicialização completa.

deno run --watch-hmr main.ts

Editores com atomic save

Alguns editores usam "atomic save" (também chamado de safe write), em que o editor grava suas alterações em um arquivo temporário e depois o renomeia sobre o original a cada salvamento. No Linux, isso substitui o arquivo por um novo no disco, o que pode desconectar o file watcher usado por --watch-hmr depois da primeira mudança. O sintoma é que a substituição a quente funciona uma vez e depois para de detectar novas edições nesse módulo.

Se você encontrar isso, desative atomic save no seu editor:

  • Helix: defina [editor] atomic-save = false (ele vem ativado por padrão).
  • Neovim/Vim: defina :set backupcopy=yes.

--watch simples não é afetado, porque cada mudança aciona uma reinicialização completa que restabelece os watchers.