Introdução
O nodemon é uma biblioteca que ajuda no desenvolvimento de sistemas com o Node.js reiniciando automaticamente o servidor.
Imagine a seguinte situação, você está desenvolvendo uma aplicação com o Node, e criou uma rota, para acessá-la, é preciso reiniciar o servidor.
Caso crie um controller, ou algum outro método para se conectar com essa rota, será necessário reiniciar novamente para que seja aplicado as alterações.
Veja que a cada alteração, é necessário reiniciar o servidor, para que a mudança seja realmente aplicada, e fazer isso durante um dia inteiro de desenvolvimento é bem desgastante.
É exatamente esse problema que o Nodemon resolve, ele fica monitorando a aplicação em Node, e assim que houver qualquer mudança no código, o servidor é reiniciado automaticamente.
Com isso é possível ganhar muito mais produtividade durante o desenvolvimento.
Instalação
Há basicamente duas formas de instalação, e você pode escolher qual desejar.
A primeira forma, é utilizada para caso você queira acessar o nodemon em qualquer diretório do seu sistema operacional, com isso, qualquer diretório que tenha uma aplicação Node, poderá ser iniciada com ele.
npm install -g nodemon
Com essa instalação, é possível colocar no console nodemon index.js
e ele iniciará o servidor.
A segunda forma, é instalar como dependência de desenvolvimento no projeto, dessa forma não é possível iniciar em qualquer diretório, e será preciso criar um script no package.json
para iniciar a aplicação.
npm install --save-dev nodemon
Com essa instalação, ele ficará no projeto na parte de devDependencies
.
As duas formas são boas para ser utilizadas, e você poderá escolher a que preferir.
Como utilizar
Para o exemplo, vou usar uma aplicação Node com o Express, e que tenha uma rota. Esse é o código:
//server.js
const express = require("express");
const app = express();
const PORT = 3000;
app.get("/", (req, res) => {
res.json({message: 'ok'});
});
app.listen(PORT, () => {
console.log(`Running in http://localhost:${PORT}`);
})
Caso você tenha optado pela primeira instalação, para iniciar essa aplicação, é possível navegar até o diretório da aplicação pelo terminal e digitar o seguinte comando:
nodemon server.js
A aplicação será iniciada e começará a ser monitorada, e a cada alteração, será reiniciada automaticamente, a saída no terminal será essa:

A cada alteração, ele irá reiniciar e mostrar essa mesma saída.
Iniciar por script
Caso tenha optado pela segunda opção de instalação, de instalar somente nesse projeto como dependência de desenvolvimento, será necessário registrar um script no package.json
.
No package.json
, é possível criar um script para iniciar a aplicação, esse item é muito utilizado, pois caso a aplicação tenha que subir muitos serviços, ou um comando muito extenso, compensa criar um script para isso.
No arquivo package.json
, há uma chave scripts, que normalmente vem assim por padrão:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
Para criar um novo script de inicio da aplicação, é possível criar uma chave start
, abaixo da chave test
, e passar para essa chave o comando de inicialização, que nesse caso será com o nodemon.
Atualize o package.json
para deixar dessa forma a chave de scripts:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon server.js"
},
Dessa forma o script já está criado e estará funcionando, para testar, navegue até o diretório do projeto pelo terminal, e execute o seguinte comando:
npm start
//ou
yarn start //se estiver utilizando o yarn
A saída do terminal, será similar a essa:

Repare que agora, em vez de executar diretamente, mostrou acima que foi executado o script do package.json
.
Arquivo de configuração
Das formas mostradas anteriormente, foi mostrado somente o padrão de reinicialização que ele irá utilizar, que é basicamente, sempre que tiver alguma alteração no projeto, o servidor irá reiniciar.
As duas formas acima, vão atender a maioria dos projetos, porém, é possível passar algumas configurações a mais para o nodemon realizar algumas tarefas de forma diferente.
Como por exemplo, é possível adicionar um delay, na reinicialização do servidor, monitorar alguns arquivos específicos, ignorar o monitoramento de arquivos e entre outras configurações.
Todas essas, é possível configurar, passando flags na frente do comando principal, porém, com muitas configurações, fica um comando extenso e difícil de entender.
É possível criar um arquivo chamado nodemon.json no projeto e colocar todas as configurações dentro dele. Veja o exemplo:
//nodemon.json
{
"verbose": true,
"ignore": [
".git",
"node_modules/**/node_modules"
],
"delay": 10000
}
Neste arquivo, basicamente está dizendo que é para ignorar qualquer alteração relacionada ao git, e também no diretório node_modules, que é o diretório que fica as bibliotecas.
Também tem uma configuração de delay, que irá demorar 10 segundos para reiniciar após qualquer mudança.
Com esse arquivo de configuração, quando rodar a aplicação, seja por qualquer uma das duas formas, terá uma saída como essa no terminal:

Repare que agora mais algumas informações foram adicionadas para a saída, e a cada nova chave de configuração, a informação adicionada irá aparecer no terminal.
Vídeo
Canais
Para ver outros canais onde o posto conteúdo e meu Github, veja os Links do Programando Soluções.
Conclusão
O nodemon é uma excelente ferramenta de desenvolvimento, ajuda demais a não ter que ficar reiniciando a aplicação a todo momento, que além de não ser legal, também não é produtivo.
Referências:
https://www.npmjs.com/package/nodemon