Nodemon para JavaScript (Node.js): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Nodemon para JavaScript (Node.js): guia completo com exemplos

1. O que é e para que serve

Nodemon é uma ferramenta para desenvolvimento em Node.js que reinicia automaticamente o servidor (ou qualquer aplicação Node.js) ao detectar alterações nos arquivos do projeto. É uma ferramenta indispensável para desenvolvedores web que trabalham com Express, Koa, Fastify e outros frameworks. Em vez de parar e iniciar o servidor manualmente após cada alteração no código, o Nodemon faz isso por você, monitorando o sistema de arquivos e reagindo a eventos de salvamento.

A principal função do Nodemon é acelerar o ciclo de desenvolvimento. Sem ele, o desenvolvedor perde tempo com ações repetitivas: Ctrl+C, seta para cima, Enter. Com o Nodemon, esse processo é totalmente automatizado. Ele não apenas reinicia o processo, mas também lida corretamente com o encerramento da instância anterior, liberando portas e recursos. Além disso, o Nodemon pode ignorar arquivos e pastas específicos (por exemplo, node_modules ou .git), reduzindo a carga na CPU e no disco.

É importante entender que o Nodemon não é uma biblioteca no sentido clássico (como Lodash ou Axios), mas sim uma ferramenta de linha de comando (CLI). Ele não foi projetado para ser importado no código como um módulo (embora tecnicamente seja possível via API). Seu uso principal é a execução a partir do terminal ou através de scripts no package.json. O Nodemon é compatível com todos os sistemas operacionais (Windows, macOS, Linux) e funciona com qualquer versão do Node.js.

2. Instalação

O Nodemon é instalado via npm (Node Package Manager). Recomenda-se instalá-lo globalmente ou como dependência de desenvolvimento no projeto.

Instalação global (para todos os projetos):

npm install -g nodemon

Instalação local (para um projeto específico):

npm install --save-dev nodemon

Após a instalação local, você pode executar o Nodemon via npx ou adicionando um script no package.json:

{
  "scripts": {
    "dev": "nodemon app.js"
  }
}

Em seguida, execute: npm run dev.

3. Início rápido — exemplo funcional mínimo

Crie um arquivo app.js com um servidor HTTP simples:

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Olá, Mundo!\n');
});

const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Servidor rodando em http://localhost:${PORT}/`);
});

Agora execute o Nodemon:

nodemon app.js

Você verá a seguinte saída:

[nodemon] 3.1.0
[nodemon] para reiniciar a qualquer momento, digite `rs`
[nodemon] monitorando caminho(s): *.*
[nodemon] monitorando extensões: js,mjs,cjs,json
[nodemon] iniciando `node app.js`
Servidor rodando em http://localhost:3000/

Tente alterar o texto em res.end() para 'Olá, Nodemon!\n' e salve o arquivo. O Nodemon reiniciará automaticamente o servidor e você verá a resposta atualizada ao recarregar a página no navegador.

4. Principais métodos/funções/classes

O Nodemon oferece tanto uma interface CLI quanto uma API programática. Abaixo estão os principais métodos e recursos com exemplos.

4.1. nodemon([options]) — Execução programática

Assinatura: nodemon([options: Object])

O que faz: Inicia o Nodemon programaticamente a partir de um script Node.js. Permite ajustar o comportamento e lidar com eventos.

Exemplo:

const nodemon = require('nodemon');

nodemon({
  script: 'app.js',
  ext: 'js json html',
  ignore: ['node_modules/', 'test/'],
  env: { NODE_ENV: 'development' }
});

nodemon.on('start', () => {
  console.log('Nodemon iniciou!');
}).on('quit', () => {
  console.log('Nodemon encerrou.');
  process.exit();
}).on('restart', (files) => {
  console.log('Nodemon reiniciou devido a alterações em:', files);
});

4.2. nodemon --watch — Monitorar diretórios específicos

O que faz: Define quais diretórios ou arquivos o Nodemon deve monitorar. Útil para projetos com múltiplos diretórios de código-fonte.

Exemplo:

nodemon --watch src --watch config app.js

Isso monitora apenas as pastas src e config, ignorando alterações em outros lugares.

4.3. nodemon --ignore — Ignorar arquivos/pastas

O que faz: Ignora alterações em arquivos ou pastas específicos, evitando reinicializações desnecessárias.

Exemplo:

nodemon --ignore 'public/*' --ignore '*.log' app.js

4.4. nodemon --ext — Extensões de arquivo personalizadas

O que faz: Define quais extensões de arquivo o Nodemon deve monitorar. Por padrão, ele monitora js, mjs, cjs, json.

Exemplo:

nodemon --ext 'js,ts,json,yaml' app.js

4.5. nodemon --delay — Atraso na reinicialização

O que faz: Adiciona um atraso (em milissegundos) antes de reiniciar o servidor após uma alteração. Útil para evitar múltiplas reinicializações ao salvar vários arquivos de uma vez.

Exemplo:

nodemon --delay 2500ms app.js

4.6. nodemon --signal — Sinal de encerramento personalizado

O que faz: Define o sinal usado para encerrar o processo. Por padrão, é SIGUSR2.

Exemplo:

nodemon --signal SIGTERM app.js

5. Conclusão

O Nodemon é uma ferramenta essencial para qualquer desenvolvedor Node.js que deseja aumentar a produtividade. Ele elimina a necessidade de reiniciar manualmente o servidor a cada alteração, permitindo que você se concentre no que realmente importa: escrever código. Com opções flexíveis de configuração, suporte a monitoramento de diretórios específicos e integração fácil com qualquer framework, o Nodemon se torna um aliado indispensável no desenvolvimento web moderno.

Experimente o Nodemon no seu próximo projeto e veja como ele pode transformar seu fluxo de trabalho!

Recommendations