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.js
durante 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 --repl
ounode ./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_CONFIG
tem 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.js
do 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
MoleculerRunner
como 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
SERVICEDIR
for encontrado no env, mas nenhumSERVICES
existe no env, ele carrega todos os serviços do diretórioSERVICEDIR
. - Se
SERVICEDIR
&SERVICES
for encontrado no env, ele carrega todos os serviços do diretórioSERVICEDIR
. - Se nenhum
SERVICEDIR
for encontrado no env, masSERVICES
for 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 pastaservices
com uma máscara de arquivo**/*.service.js
.!services/others/**/*.service.js
- ignora todos os serviços na pastaservices/others
e 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
nodeID
será sufixo com o worker ID. Ex.: se você definirmy-node
como 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
dotenv
com o comandonpm install dotenv --save
.