Moleculer Runner é um script auxiliar que ajuda você a executar projetos do Moleculer. Com isso, você não precisa criar uma instância do ServiceBroker com opções. Ao invés disso, você pode criar um arquivo moleculer.config.js na raiz do repositório com opções do broker. Então simplesmente chame o moleculer-runner via script NPM, e ele carregará automaticamente o arquivo de configuração, criará o broker e fará a inicialização dos serviços. Como alternativa, você pode declarar sua configuração como variáveis de ambiente.
Production-readyUse o
moleculer.config.jsdurante o desenvolvimento ou armazene opções comuns. Em produção, você pode substituir os valores com as variáveis de ambiente!
Sintaxe
$ moleculer-runner [options] [arquivos de serviço ou pastas ou máscaras] |
Nota: Ele é executado neste formato somente em scripts NPM. Para chamá-lo diretamente do seu console, use o formato
./node_modules/.bin/moleculer-runner --replounode ./node_modules/moleculer/bin/moleculer-runner.js --repl.
Opções
| Opção | Tipo | Padrão | Descrição |
|---|---|---|---|
-r, --repl |
Boolean |
false |
Se verdadeiro, ele alterna para o modo REPL após o início do broker. |
-s, --silent |
Boolean |
false |
Desabilitar o log do broker. Não exibe nada ao console. |
-H, --hot |
Boolean |
false |
Recarrega automaticamente os serviços quando há alteração. |
-c, --config <file> |
String |
null |
Carregar arquivo de configuração de um caminho diferente ou um nome de arquivo diferente. |
-e, --env |
Boolean |
false |
Carregar variáveis de ambiente a partir do arquivo ‘.env’ da pasta atual. |
-E, --envfile <file> |
String |
null |
Carregar variáveis de ambiente a partir do arquivo especificado. |
-i, --instances |
Number |
null |
Inicie [number] instâncias do nó ou max para todos os núcleos de cpu (com o módulo cluster) |
Exemplos de scripts NPM
{ |
O script dev carrega configurações de desenvolvimento do arquivo moleculer.dev.config.js, inicializa todos os serviços a partir da pasta services, habilita o recarregamento automático e alterna para o modo REPL. Execute-o com o comando npm run dev.
O script start é para carregar o arquivo padrão moleculer.config.js se ele existir, caso contrário só carrega opções de variáveis de ambiente. Inicia 4 instâncias do broker, e em seguida inicializa todos os serviços na pasta services. Execute-o com o comando npm start.
Lógica de carregamento das configurações
O runner faz os seguintes passos para carregar & mesclar as configurações:
- Carrega o arquivo de configuração definido na variável de ambiente
MOLECULER_CONFIG. Se não existe, retorna um erro. - Carrega o arquivo de configuração definido nas opções do CLI. Se não existe, retorna um erro. Observe que
MOLECULER_CONFIGtem prioridade sobre CLI significando que se ambas forem definidasMOLECULER_CONFIGé a que será usada. - Se não estiver definido, irá carregar o arquivo
moleculer.config.jsdo diretório atual. Se ele não existir, carrega o arquivomoleculer.config.json. - Uma vez que um arquivo de configuração foi carregado, ele mescla as opções com as opções padrão do ServiceBroker.
- O runner observa as opções uma a uma e tenta substituí-las por variáveis de ambiente. Uma vez que o
logLevel: "warn"é definido no arquivo de configuração, mas a variável de ambienteLOGLEVEL=debugé definida, o runner sobrescreve e o resultado é:logLevel: "debug".
Para sobrescrever as opções padrão profundamente aninhadas do broker, que não estão presentes no
moleculer.config.js, através de variáveis de ambiente, use o prefixoMOL_e sublinhado duplo__para propriedades aninhadas no arquivo.env. Por exemplo, para definir o prefixo de cache paraMOL, você deve declarar comoMOL_CACHER__OPTIONS__PREFIX=MOL.
Arquivo de configuração
A estrutura do arquivo de configuração é a mesma que as opções do broker. Todas as propriedades têm o mesmo nome.
Exemplo de arquivo de configuração
// moleculer.config.js |
Arquivo de configuração assíncrono
Moleculer Runner também suporta arquivos de configuração assíncronos. Neste caso moleculer.config.js deve exportar uma Function que retorne uma Promise (ou você pode usar async/await).
// moleculer.config.js |
Esta função é executada com a instância
MoleculerRunnercomo o contextthis. Útil se você precisa acessar as configurações passadas para o runner. Verifique o código fonte em MoleculerRunner para mais detalhes.
Variáveis de ambiente
O runner transforma os nomes das propriedades em maiúsculas. Se aninhado, o runner concatena nomes com _.
Exemplos de variáveis de ambiente
NODEID=node-test |
Lógica de carregamento de serviços
O runner carrega arquivos de serviço ou pastas definidas nos argumentos CLI. Se você definir pasta(s), o runner carrega todos os serviços **/*.service.js a partir da(s) especificada(s) (incluindo subpastas também). Os serviços & a pasta de serviços podem ser carregados com as variáveis de ambiente SERVICES e SERVICEDIR.
Etapas do carregamento:
- Se
SERVICEDIRfor encontrado no env, mas nenhumSERVICESexiste no env, ele carrega todos os serviços do diretórioSERVICEDIR. - Se
SERVICEDIR&SERVICESfor encontrado no env, ele carrega todos os serviços do diretórioSERVICEDIR. - Se nenhum
SERVICEDIRfor encontrado no env, masSERVICESfor encontrado, ele carrega os serviços especificados do diretório atual. - Verifica os argumentos do CLI. Se o nome do arquivo for encontrado, é carregado. Se o diretório for encontrado, é carregado. Se um padrão de máscara for encontrado, ele aplica e carrega os arquivos encontrados.
Por favor, note: nomes abreviados também podem ser usados nas variáveis de ambiente
SERVICES.
Exemplo
SERVICEDIR=services |
Ele carrega os arquivos math.service.js, post.service.js e user.service.js da pasta services.
SERVICEDIR=my-services |
Ele carrega todos os arquivos *.service.js da pasta my-services (incluindo subpastas também).
Padrões Glob
Se você quiser ser mais específico, use os padrões glob. É útil para carregar todos os serviços, exceto alguns deles.
$ moleculer-runner services !services/others/**/*.service.js services/others/mandatory/main.service.js |
Explicações:
services- modo legado. Carrega todos os serviços da pastaservicescom uma máscara de arquivo**/*.service.js.!services/others/**/*.service.js- ignora todos os serviços na pastaservices/otherse suas sub-pastas.services/others/mandatory/main.service.js- carrega o serviço exato.
Os padrões glob também funcionam na variável de ambiente
SERVICES.
Cluster integrado
O Moleculer Runner possui uma função cluster integrado para iniciar várias instâncias do seu broker.
Exemplo para iniciar todos os serviços da pasta services em 4 instâncias.
$ moleculer-runner --instances 4 services |
Clustered Node IDO
nodeIDserá sufixo com o worker ID. Ex.: se você definirmy-nodecomo nodeID em opções, e inicia 4 instâncias, os nodeIDs de instância serãomy-node-1,my-node-2,my-node-3,my-node-4.
Arquivos env
O Moleculer runner pode carregar o arquivo .env ao iniciar. Existem duas novas opções para carregar arquivo env:
-e, --env- Carrega variáveis de ambiente do arquivo ‘.env’ do diretório atual.-E, --envfile <filename>- Carrega variáveis de ambiente do arquivo especificado.
Exemplo
# Load the default .env file from current directory |
DependenciesPara usar este recurso, instale o módulo
dotenvcom o comandonpm install dotenv --save.