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.
O nodemon
é um utilitário de interface de linha de comando (CLI) desenvolvido pelo @rem que encapsula seu aplicativo Node, monitora o sistema de arquivos e reinicia o processo automaticamente.
Neste artigo, você irá aprender sobre a instalação e configuração do nodemon
.
Se quiser acompanhar os passos deste artigo, será necessário:
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:
Instale o nodemon
globalmente com o npm
:
- npm install nodemon -g
Ou com o Yarn:
- yarn global add nodemon
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:
- Outputcommand 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.
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:
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:
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:
{
// ...
"main": "server.js",
// ...
}
Ou, um script start
:
{
// ...
"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
.
É possível modificar as configurações disponíveis no nodemon
.
Vamos aprender um pouco sobre as opções principais:
--exec
: use a opção --exec
para especificar um binário com qual será executado o arquivo. Por exemplo, quando combinado com o binário ts-node
, o --exec
pode 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, o nodemon
espera 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.2
para um atraso de 3.2 segundos.--watch
: use a opção --watch
para especificar vários diretórios ou arquivos a serem monitorados. Adicione uma opção --watch
para cada diretório que deseja monitorar. Por padrão, o diretório atual e seus subdiretórios são observados. Dessa forma, utilize o --watch
para arquivos ou subdiretórios específicos.--ignore
: use a opção --ignore
para 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:
server
.ts
.test.ts
server/server.ts
) com o ts-node
- 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.
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
:
{
"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
:
{
"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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!