Table of Contents
URL: https://www.progressiverobot.com/workflow-nodemon-pt/
Introdução
No Node.js, é necessário reiniciar o processo para fazer com que as alterações sejam ativadas. Isso adiciona um passo extra ao seu fluxo de trabalho para que as alterações sejam realizadas. É possível eliminar esse passo extra usando o nodemon para reiniciar o processo automaticamente.
Neste artigo, você irá aprender sobre a instalação e configuração do nodemon.
Pré-requisitos
Se quiser acompanhar os passos deste artigo, será necessário:
- O Node.js instalado localmente, o que pode ser feito seguindo Como instalar o Node.js e criar um ambiente de desenvolvimento local.
Passo 1 — Instalando o nodemon
Primeiro, você precisará instalar o nodemon em sua máquina. Instale o utilitário globalmente ou localmente em seu projeto usando o npm ou o Yarn:
Instalação global
Instale o nodemon globalmente com o npm:
npm install nodemon -g
Ou com o Yarn:
yarn global add nodemon
Instalação local
Instale o nodemon localmente com o npm. Ao executar uma instalação local, podemos instalar o nodemon como uma dependência de desenvolvimento com --save-dev (ou --dev):
npm install nodemon --save-dev
Ou com o Yarn:
yarn add nodemon --dev
Em relação à instalação local, fique ciente de que não será possível usar o comando nodemon diretamente da linha de comando:
[secondary_label Output]
command not found: nodemon
No entanto, você pode usá-lo como parte de alguns scripts do npm ou com o npx.
Isso conclui o processo de instalação do nodemon. Em seguida, vamos usar o nodemon com os nossos projetos.
Passo 2 — Configurando um projeto Express de exemplo com o nodemon
Podemos usar o nodemon para iniciar um script do Node. Por exemplo, se tivermos uma configuração do servidor Express em um arquivo server.js, podemos iniciá-la e monitorar alterações desta forma:
nodemon <^>server.js<^>
Você pode passar os argumentos da mesma forma que faria se estivesse executando o script com o Node:
nodemon <^>server.js<^> 3006
Cada vez que você faz uma alteração em um arquivo com uma das extensões monitoradas padrão (.js, .mjs, .json, .coffee ou .litcoffee) no diretório atual ou em um subdiretório, o processo será reiniciado.
Vamos supor que escrevemos um arquivo server.js de exemplo que entrega a mensagem: Dolphin app listening on port ${port}!.
Podemos executar o exemplo com o nodemon:
nodemon <^>server.js<^>
Vemos o seguinte resultado no terminal:
[secondary_label Output]
[nodemon] 1.17.3
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server.js`
<^>Dolphin<^> app listening on port 3000!
Embora o nodemon ainda esteja sendo executado, vamos alterar o arquivo server.js para exibir a mensagem: <^>Shark<^> app listening on port ${port}!.
Vemos o seguinte resultado adicional no terminal:
[secondary_label Output]
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
<^>Shark<^> app listening on port 3000!
O resultado do terminal do nosso aplicativo Node.js está sendo exibido como esperado. Reinicie o processo a qualquer momento digitando rs e apertando ENTER.
De maneira alternativa, o nodemon também irá procurar um arquivo main especificado no arquivo package.json do seu projeto:
[label package.json]
{
// ...
<^>"main":<^> "server.js",
// ...
}
Ou, um script start:
[label package.json]
{
// ...
<^>"scripts":<^> {
<^>"start":<^> "node server.js"
},
// ...
}
Depois de fazer as alterações no package.json, chame o nodemon para iniciar o aplicativo de exemplo no modo de monitoramento sem precisar passar o server.js.
Passo 3 — Usando opções
É possível modificar as configurações disponíveis no nodemon.
Vamos aprender um pouco sobre as opções principais:
--exec: use a opção--execpara especificar um binário com qual será executado o arquivo. Por exemplo, quando combinado com o bináriots-node, o--execpode tornar-se útil para monitorar alterações e executar os arquivos do TypeScript.
--ext: especifique as diferentes extensões de arquivo a serem monitoradas. Para essa opção, forneça uma lista separada por vírgulas de extensões de arquivos (por exemplo,--ext js,ts).
--delay: por padrão, onodemonespera um segundo para reiniciar o processo quando um arquivo é alterado, mas com a opção--delayé possível especificar um atraso diferente. Por exemplo,nodemon --delay 3.2para um atraso de 3.2 segundos.
--watch: use a opção--watchpara especificar vários diretórios ou arquivos a serem monitorados. Adicione uma opção--watchpara cada diretório que deseja monitorar. Por padrão, o diretório atual e seus subdiretórios são observados. Dessa forma, utilize o--watchpara arquivos ou subdiretórios específicos.
--ignore: use a opção--ignorepara ignorar certos arquivos, padrões de arquivos ou diretórios.
--verbose: um resultado mais detalhado com informações sobre os arquivos alterados para disparar um reinício.
Visualize todas as opções disponíveis com o seguinte comando:
nodemon --help
Usando essas opções, vamos criar o comando para satisfazer o seguinte cenário:
- monitorando o diretório
server
- especificando os arquivos com uma extensão
.ts
- ignorando os arquivos com um sufixo
.test.ts
- executando o arquivo (
server/server.ts) com ots-node
- esperando três segundos para reiniciar após um arquivo é alterado
nodemon --watch <^>server<^> --ext <^>ts<^> --exec <^>ts-node<^> --ignore <^>'*.test.ts'<^> --delay <^>3<^> <^>server/server.ts<^>
Esse comando combina as opções --watch, --ext, --exec, --ignore e --delay para satisfazer as condições para o nosso cenário.
Passo 4 — Usando configurações
No exemplo anterior, adicionar as opções de configuração ao executar o nodemon pode ser um processo bastante enfadonho. Uma solução melhor para projetos que precisam de configurações específicas é definir essas configurações em um arquivo nodemon.json.
Por exemplo, aqui estão as mesmas configurações do exemplo de linha de comando anterior, mas colocadas em um arquivo nodemon.json:
[label nodemon.json]
{
"watch": ["server"],
"ext": "ts",
"ignore": ["*.test.ts"],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}
Observe o uso do execMap ao invés da opção --exec. O execMap permite que você especifique os binários que devem ser usados para determinadas extensões de arquivo.
De maneira alternativa, se preferir não adicionar um arquivo de configuração nodemon.json ao seu projeto, adicione essas configurações ao arquivo package.json sob uma chave nodemonConfig:
[label package.json]
{
"name": "test-nodemon",
"version": "1.0.0",
"description": "",
<^>"nodemonConfig":<^> {
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
},
// ...
Depois de fazer as alterações no nodemon.json ou no package.json, inicie então o nodemon com o script desejado:
nodemon server/server.ts
O nodemon irá captar as configurações e usá-las. Dessa forma, suas configurações podem ser salvadas, compartilhadas e repetidas para evitar erros de copiar e colar ou de digitação na linha de comando.
Conclusão
Neste artigo, você explorou como usar o nodemon com seus aplicativos Node.js. Essa ferramenta ajuda a automatizar o processo de interromper e iniciar um servidor Node para visualizar as alterações.
Para mais informações sobre os recursos disponíveis e correção de problemas, consulte a documentação oficial.
Se quiser aprender mais sobre o Node.js, confira nossa página de tópico do Node.js para exercícios e projetos de programação.