@ flexent/ 综艺
YAML驱动的进程管理器,用于本地运行多个Node.js应用程序.
安装
npm install @flexent/ensemble
国 际
从包含 ensemble.yaml数字 :
npx ensemble
选项 :
-f, --file <path>配置文件( 默认 ):ensemble.yaml(单位:克瓦德)
配置
创建 ensemble.yaml 项目根 :
apps:
- id: api
dir: packages/api
entrypoint: out/bin/run.js
args:
- --watch
env:
HTTP_PORT: "32001"
META_HTTP_PORT: "38001"
waitForPorts:
- HTTP_PORT
- META_HTTP_PORT
- id: worker
dir: packages/worker
entrypoint: out/bin/run.js
dependsOn:
- api
waitForPorts:
- 39001
env:
SKIP_STORAGE_SETUP: "true"
sharedEnv:
LOG_PRETTY: "true"
REGISTRY_URL: http://localhost:32003
stopGracePeriodMs: 5000
每个应用程序都用 stdio: inherit停止时,综艺节目发送 SIGTERM单 stopGracePeriodMs (默认) 5000),然后发送 SIGKILL 如果孩子还在跑.
args 是可选的。 命令行参数传递到前置进程 entrypoint。 。 。 .
stopGracePeriodMs 是可选的.
dependsOn 列出在此日期之前必须开始的应用程序 ID 。 无依赖的应用程序从配置顺序开始. 组合以反起动顺序停止应用程序 .
waitForPorts 列出 env var 名称或字形端口编号。 退出后, 综艺将等待每个端口接受 TCP 连接 127.0.0.1 在程序被视为启动之前。 Env var 名称由 app 合并的 env 解决(sharedEnv,然后每个应用程序 env) (中文(简体) ). 与 dependsOn 当受抚养人等待受抚养人听话的时候.
sharedEnv 被合并为每个前置应用的环境。 每个应用程序 env 覆盖共享的值。 综艺母进程没有被修改.
程序化 API
import { Ensemble } from '@flexent/ensemble';
const ensemble = new Ensemble();
await ensemble.resolve('path/to/ensemble.yaml');
await ensemble.start('api');
await ensemble.stop('api');
// OR
await ensemble.startAll();
await ensemble.stopAll();