Moleculer Runner is a helper script that helps you run Moleculer projects. With it, you don’t need to create a ServiceBroker instance with options. Instead, you can create a moleculer.config.js
file in the root of repo with broker options. Then simply call the moleculer-runner
in NPM script, and it will automatically load the configuration file, create the broker and load the services. В качестве альтернативы, вы можете объявить задать конфигурацию с помощью переменных среды.
Production-readyИспользуйте
moleculer.config.js
во время разработки или для хранения общих параметров. В продакшене вы можете переписать значения с помощью переменных среды!
Синтаксис
$ moleculer-runner [параметры] [файлы сервисов или директории или глоабльный шаблон] |
Примечание: работает только из NPM скриптов. Для прямого вызова непосредственно из консоли, используйте
./node_modules/.bin/moleculer-runner --repl
илиnode ./node_modules/moleculer/bin/moleculer-runner.js --repl
.
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
-r , --repl |
Boolean |
false |
Если true, то после запуска брокер переключается в режим REPL. |
-s , --silent |
Boolean |
false |
Отключить журнал брокера. Ничего не выводить в консоль. |
-H , --hot |
Boolean |
false |
Горячая перезагрузка при изменении исходных файлов. |
-c , --config <file> |
String |
null |
Загрузить файл конфигурации из другого пути или другого имени файла. |
-e , --env |
Boolean |
false |
Загрузить переменные окружения из файла ‘.env’ из текущей папки. |
-E , --envfile <file> |
String |
null |
Загрузить переменные окружения из указанного файла. |
-i , --instances |
Number |
null |
Запустить [number] экземпляров узлов или max для всех ядер cpu (с модулем cluster ) |
Примеры сценариев NPM
{ |
Скрипт dev
загружает конфигурацию из файла moleculer.dev.config.js
и запускает все службы из папки services
, включает горячую перезагрузку и переключается в режим REPL. Запустите команду npm run dev
.
Скрипт start
загружает конфигурационный файл moleculer.config.js
если он существует, иначе загружает параметры только из переменных среды. Запускает 4 экземпляра брокера, затем они запускают все службы из папки services
. Запустите команду npm start
.
Логика загрузки конфигурации
Стартер делает следующие шаги для загрузки и слияния параметров конфигурации:
- Load the config file defined in
MOLECULER_CONFIG
environment variable. Если он не существует, он бросает ошибку. - Он загружает файл конфигурации, определенный в настройках CLI. Если он не существует, он бросает ошибку. Note that
MOLECULER_CONFIG
has priority over CLI meaning that if both are definedMOLECULER_CONFIG
is the one that’s going to be used. - Если не определено, он загружает файл
moleculer.config.js
из текущего каталога. Если он не существует, он загружает файлmoleculer.config.json
. - После загрузки файла конфигурации, он объединяет параметры по умолчанию для ServiceBroker.
- Стартер просматривает параметры шаг за шагом и пытается перезаписать их из переменных среды. Если в файле конфигурации
logLevel: "warn"
, а переменная окруженияLOGLEVEL=debug
, то стартер перезапишет параметр, и в результате получится:logLevel: "debug"
.
Чтобы перезаписать глубоко вложенные параметры брокера по умолчанию, которые отсутствуют в
moleculer.config.js
, используются переменные среды, с префиксомMOL_
и двойным подчеркиванием__
для вложенных свойств в файле.env
. Например, для установки префикса cacher prefix вMOL
необходимо объявитьMOL_CACHER__OPTIONS__PREFIX=MOL
.
Файл конфигурации
Структура конфигурационного файла совпадает с структурой параметров брокера. Каждое свойство имеет такое же имя.
Пример файла конфигурации
// moleculer.config.js |
Асинхронный файл конфигурации
Moleculer Runner также поддерживает асинхронные конфигурационные файлы. В этом случае moleculer.config.js
должен экспортировать Функцию
, которая возвращает Promise
(или можно использовать async/await
).
// moleculer.config.js |
This function runs with the
MoleculerRunner
instance as thethis
context. Useful if you need to access the flags passed to the runner. Check the MoleculerRunner source more details.
Переменные окружения
Стартер преобразует имена свойств в верхний регистр. Имена вложенных параметров объединяются символом _
.
Пример переменных окружения
NODEID=node-test |
Логика загрузки служб
Runner загружает файлы или папки, определенные в аргументах CLI. Если вы определяете папку(и), runner загружает все сервисы **/*.service.js
из них (включая также вложенные папки). Сервисы & и сервисные папки могут быть загружены с помощью переменных окружения SERVICES
и SERVICEDIR
.
Очерёдность загрузки:
- Если задана переменная окружения
SERVICEDIR
, но не заданаSERVICES
, то производится загрузка всех сервисов из каталогаSERVICEDIR
. - Если заданы обе переменные окружения
SERVICEDIR
&SERVICES
, то производится загрузка из директорий, указанных вSERVICEDIR
. - Если не задана
SERVICEDIR
, но заданаSERVICES
, то производится загрузка указанных сервисов из текущей директории. - Проверка аргументов CLI. При обнаружении имён файлов производится их загрузка. Если задан каталог, то производится загрузка из него. Если задан глобальный шаблон, то он применяется и производится загрузка найденных файлов.
Обратите внимание: короткие имена также могут быть использованы в перемнной окружения
СЕРВИСЫ
.
Пример
SERVICEDIR=services |
Загрузит math.service.js
, post.service.js
и user.service.js
файлы из папки services
.
SERVICEDIR=my-services |
Производится загрузка всех файлов *.service.js
из папки my-services
(включая также вложенные папки).
Глобальные шаблоны
Использование глобальных шаблонов позволяет делать запуск более гибким. Это полезно при загрузке всех сервисов, за исключением некоторых из них.
$ moleculer-runner services !services/others/**/*.service.js services/others/mandatory/main.service.js |
Пояснения:
services
- устаревший режим. Загрузка всех сервисы из папкиservices
с помощью маски файлов**/*.service.js
.!services/others/**/*.service.js
- пропустить все сервисы в папкеservices/others
и её подпапках.services/others/mandatory/main.service.js
- загрузите только указанный сервис.
The glob patterns work in the
SERVICES
environment variables, as well.
Встроенная кластеризация
Moleculer Runner имеет встроенную функцию кластеризации для запуска нескольких экземпляров вашего брокера.
Пример запуска всех служб из папки services
в 4 экземплярах.
$ moleculer-runner --instances 4 services |
Clustered Node IDК
nodeID
будут добавлены идентификаторы воркеров в виде суффикса. Например, если nodeID задан какmy-node
, и запущено 4 экземпляра, то экземпляры будут иметь следующие идентификаторы:my-node-1
,my-node-2
,my-node-3
,my-node-4
.
.env файлы
Стартер может загрузить .env
файл при запуске. Есть две новых CLI опции для загрузки env файла:
-e, --env
- Load environment variables from the ‘.env’ file from the current folder.-E, --envfile <filename>
- Load environment variables from the specified file.
Пример
# загрузит .env файл из текущей директории |
ЗависимостиTo use this feature, install the
dotenv
module withnpm install dotenv --save
command.