nodemon é uma ferramenta que ajuda a desenvolver aplicações baseadas no node.js, reiniciando automaticamente a aplicação do nó quando forem detectadas alterações no diretório.

nodemon não requer nenhuma alteração adicional no seu código ou método de desenvolvimento. nodemon é um wrapper de substituição para node. Para usar nodemon, substitua a palavra node na linha de comando ao executar seu script.

Instalação

E através de clonagem com git ou usando npm (a forma recomendada):

npm install -g nodemon

E nodemon será instalado globalmente no caminho do seu sistema.

Você também pode instalar nodemon como uma dependência de desenvolvimento:

npm install --save-dev nodemon

Com uma instalação local, nodemon não estará disponível no caminho do seu sistema. Ao invés disso, a instalação local do nodemon pode ser executada chamando-o de dentro de um script npm (como npm start) ou usando npx nodemon.

Uso

nodemon envolve sua aplicação, assim você pode passar todos os argumentos que você normalmente passaria para sua aplicação:

nodemon 

Para opções CLI, use o argumento -h (ou ):

nodemon -h

Usar o nodemon é simples, se a minha aplicação aceitasse um host e porta como argumentos, eu o iniciaria como tal:

nodemon ./server.js localhost 8080

Ainda a saída deste script tem o prefixo , caso contrário todas as saídas da sua aplicação, incluindo erros, serão ecoadas como esperado.

Se nenhum script for dado, nodemon irá testar para um arquivo package.json e se encontrado, irá executar o arquivo associado com a propriedade principal (ref).

Você também pode passar a bandeira inspect para o nó através da linha de comando como você normalmente faria:

nodemon --inspect ./server.js 80

Se você tiver um arquivo package.json para sua aplicação, você pode omitir o script principal por completo e nodemon irá ler a package.json para a propriedade main e usar esse valor como a aplicação.

nodemon também irá procurar pela propriedade scripts.start em package.json (a partir do nodemon 1.1.x).

Também verifique as FAQ ou problemas para nodemon.

Reprodução automática

nodemon foi originalmente escrito para reiniciar processos pendurados como servidores web, mas agora suporta aplicativos que saem limpos. Se seu script sair de forma limpa, nodemon continuará a monitorar o diretório (ou diretórios) e reiniciar o script se houver alguma mudança.

Reinicialização manual

Se o nodemon estiver rodando, se você precisar reiniciar manualmente sua aplicação, ao invés de parar e reiniciar o nodemon, você pode digitar rs com um retorno de carruagem, e o nodemon reiniciará seu processo.

Arquivos de configuração

nodemon suporta arquivos de configuração locais e globais. Estes são normalmente nomeados nodemon.json e podem ser localizados no diretório de trabalho atual ou no seu diretório home. Um arquivo de configuração local alternativo pode ser especificado com a opção --config <file>.

A especificidade é a seguinte, para que um argumento de linha de comando sempre substitua as configurações do arquivo de configuração:

  • argumentos de linha de comando
  • configuração local
  • configuração global

Um arquivo de configuração pode tomar qualquer um dos argumentos de linha de comando como valores chave do JSON, por exemplo:

{ "verbose": true, "ignore": , "execMap": { "rb": "ruby", "pde": "processing --sketch={{pwd}} --run" }}

O arquivo acima nodemon.json pode ser minha configuração global para que eu tenha suporte a arquivos ruby e arquivos de processamento, e eu posso executar nodemon demo.pde e nodemon saberá automaticamente como executar o script mesmo que fora da caixa de suporte a scripts de processamento.

Um outro exemplo de opções pode ser visto em sample-nodemon.md

package.json

Se você quiser manter todas as configurações do seu pacote em um só lugar, nodemon suporta o uso de package.json para configuração.Especifique a configuração no mesmo formato que você usaria para um arquivo de configuração mas sob nodemonConfig no arquivo package.json, por exemplo, pegue o seguinte package.json:

{ "name": "nodemon", "homepage": "http://nodemon.io", "...": "... other standard package.json values", "nodemonConfig": { "ignore": , "delay": "2500" }}

Note que se você especificar um arquivo --config ou fornecer um arquivo local nodemon.json qualquer package.json a configuração é ignorada.

Esta seção precisa de melhor documentação, mas por enquanto você também pode ver nodemon --help config (também aqui).

Usando nodemon como módulo

Por favor veja doc/requireable.md

Usando nodemon como processo infantil

Por favor veja doc/events.md

Executando scripts sem nó

nodemon também pode ser usado para executar e monitorar outros programas. nodemon lerá a extensão do script sendo executado e monitorará essa extensão ao invés de .js se não houver nodemon.json:

nodemon --exec "python -v" ./app.py

Now nodemon executará app.py com python em modo verboso (note que se você não estiver passando args para o programa exec, você não precisa das aspas), e procurará por arquivos novos ou modificados com a extensão .py.

Executáveis padrão

Usando o arquivo de configuração nodemon.json, você pode definir seus próprios executáveis padrão usando a propriedade execMap. Isto é particularmente útil se você estiver trabalhando com uma linguagem que não é suportada por padrão pelo nodemon.

Para adicionar suporte a nodemon para saber sobre a extensão .pl (para Perl), o arquivo nodemon.json adicionaria:

{ "execMap": { "pl": "perl" }}

Agora executando o seguinte, nodemon saberá usar perl como executável:

nodemon script.pl

É geralmente recomendado usar o global nodemon.json para adicionar suas próprias opções execMap. Entretanto, se há um padrão comum que está faltando, isto pode ser unido ao projeto para que nodemon o suporte por padrão, alterando o arquivo default.js e enviando um pedido pull.

Monitorando múltiplos diretórios

Por padrão nodemon monitora o diretório de trabalho atual. Se você quiser assumir o controle dessa opção, use a opção --watch para adicionar caminhos específicos:

nodemon --watch app --watch libs app/server.js

Agora o nodemon só reiniciará se houver mudanças no diretório ./app ou ./libs. Por padrão o nodemon atravessará subdiretórios, então não há necessidade de incluir explicitamente subdiretórios.

Não use unix globbing para passar vários diretórios, por exemplo --watch ./lib/*, ele não funcionará. Você precisa de uma bandeira --watch por diretório observado.

Especificando extensão lista de observação

nodemon -e js,pug

Agora o nodemon reiniciará em qualquer alteração nos arquivos do diretório (ou subdiretórios) com as extensões .js, .pug.

Ignorando arquivos

Por padrão, nodemon reiniciará somente quando um arquivo JavaScript .js mudar. Em alguns casos você vai querer ignorar alguns arquivos específicos, diretórios ou padrões de arquivos, para evitar que o nodemon reinicie prematuramente sua aplicação.

Isso pode ser feito através da linha de comando:

nodemon --ignore lib/ --ignore tests/

Or arquivos específicos podem ser ignorados:

nodemon --ignore lib/app.js

Padrões também podem ser ignorados (mas certifique-se de citar os argumentos):

nodemon --ignore 'lib/*.js'

Note que por padrão, nodemon irá ignorar os diretórios .git, node_modules, bower_components, .nyc_output, coverage e .sass-cache e adicionar seus padrões ignorados à lista. Se você quer realmente assistir a um diretório como node_modules, você precisa sobrescrever as regras padrão ignoradas.

Aplicação não está reiniciando

Em alguns ambientes de rede (como um container rodando nodemon lendo através de um drive montado), você precisará usar o legacyWatch: true que habilita a sondagem do Chokidar.

Via a CLI, use ou --legacy-watch ou -L para abreviar:

nodemon -L

Pois isto deve ser um último recurso, já que irá pesquisar todos os arquivos que encontrar.

Atrasando o reinício

Em algumas situações, você pode querer esperar até que um número de arquivos tenha mudado. O tempo limite antes de verificar por novas alterações de ficheiros é de 1 segundo. Se você estiver carregando um número de arquivos e estiver demorando alguns segundos, isso pode fazer com que sua aplicação reinicie várias vezes desnecessariamente.

Para adicionar um acelerador extra, ou atrasar o reinício, use o comando:--delay comando:

nodemon --delay 10 server.js

Para maior precisão, milissegundos podem ser especificados. Seja como um flutuador:

nodemon --delay 2.5 server.js

Or usando o especificador de tempo (ms):

nodemon --delay 2500ms server.js

O valor do atraso é o número de segundos (ou milissegundos, se especificado) para retardar antes de reiniciar. Então nodemon só reiniciará sua aplicação o número dado de segundos após a última mudança de arquivo.

Se você estiver definindo este valor em nodemon.json, o valor será sempre interpretado em milissegundos. Por exemplo.., o seguinte é equivalente:

nodemon --delay 2.5{ "delay": "2500"}

Recarregar graciosamente o seu script

É possível que o nodemon envie qualquer sinal que você especificar para a sua aplicação.

nodemon --signal SIGHUP server.js

A sua aplicação pode lidar com o sinal da seguinte forma.

process.once("SIGHUP", function () { reloadSomeConfiguration();})

Por favor note que nodemon enviará este sinal para cada processo na árvore de processos.

Se você estiver usando cluster, então cada trabalhador (assim como o mestre) receberá o sinal. Se você deseja terminar todos os workers ao receber um SIGHUP, um padrão comum é pegar o SIGHUP no master, e encaminhar o SIGTERM para todos os workers, enquanto garante que todos os workers ignorem SIGHUP.

Controlando o desligamento do seu script

nodemon envia um sinal de kill para a sua aplicação quando ela vê uma atualização de arquivo. Se você precisar limpar ao desligar dentro do seu script, você pode capturar o sinal de kill e manipulá-lo você mesmo.

O exemplo a seguir irá ouvir uma vez o sinal SIGUSR2 (usado pelo nodemon para reiniciar), executar o processo de limpeza e então se matar para o nodemon continuar o controle:

process.once('SIGUSR2', function () { gracefulShutdown(function () { process.kill(process.pid, 'SIGUSR2'); });});

Note que o process.kill só é chamado quando seus trabalhos de desligamento estiverem completos. Hat tip to Benjie Gillam para escrever esta técnica.

Acionar eventos quando o estado do nodemon muda

Se você quiser rosnar como notificações quando o nodemon reinicia ou acionar uma ação quando um evento acontece, então você pode ou require nodemon ou adicionar ações de eventos ao seu arquivo nodemon.json.

Por exemplo, para acionar uma notificação em um Mac quando o nodemon reinicia, nodemon.json parece assim:

{ "events": { "restart": "osascript -e 'display notification \"app restarted\" with title \"nodemon\"'" }}

Uma lista completa de eventos disponíveis está listada no wiki de estados de evento. Note que você pode ligar a ambos os estados e mensagens.

>

Saída de pipe para outro lugar

Usando nodemon no seu fluxo de trabalho do gulp

Check out the gulp-nodemon plugin para integrar nodemon com o resto do fluxo de trabalho do gulp do seu projeto.

Usando nodemon no seu fluxo de trabalho Grunt

Cheque o plugin grunt-nodemon para integrar nodemon com o resto do fluxo de trabalho grunt do seu projeto.

Pronúncia

nodemon, é pronunciado: node-mon, no-demon ou node-e-mon (como pokémon)?

Bem…Já me perguntaram isso muitas vezes. Eu gosto que já me tenham perguntado isto antes. Já houve apostas sobre qual delas é na verdade.

A resposta é simples, mas possivelmente frustrante. Eu não estou dizendo (como eu o pronuncio). Cabe a você chamá-lo como quiser. Todas as respostas estão correctas:)

Princípios de design

  • Menos bandeiras é melhor
  • Trabalha em todas as plataformas
  • Menos características
  • Deixe os indivíduos build on top of nodemon
  • Offer all CLI functionality as an API
  • Contribuições devem ter e passar nos testes

Nodemon não é perfeito, e os argumentos da CLI espalharam-se para além de onde estou completamente feliz, mas talvez possa ser reduzido um pouco um dia.

FAQ

Veja as FAQ e por favor adicione as suas próprias perguntas se acha que elas ajudariam os outros.

Backers

Obrigado a todos os nossos backers! 🙏

Patrocinadores

Patrocine este projeto tornando-se um patrocinador. O seu logotipo aparecerá aqui com um link para o seu site. Patrocine este projeto hoje ❤️

Licença

MIT http://rem.mit-license.org

Deixe uma resposta

O seu endereço de email não será publicado.