У меня есть куча микросервисов, и чтобы упростить разработку, я хочу написать скрипт для небольшого узла, который просматривает каждый файл и запускает npm run dev
для локального запуска приложения.
Я хочу, чтобы вывод консоли для каждого приложения также отображался в окне одного терминала.
Пока у меня есть сценарий, который принимает родительский каталог в качестве аргумента, проходит через все дочерние каталоги, а затем пытается вызвать yarn dev
внутри каждого из них.
#!/usr/bin/env node
var program = require('commander');
const { lstatSync, readdirSync } = require('fs')
const { join } = require('path')
const util = require("util")
const exec = util.promisify(require("child_process").exec)
program
.arguments('dir')
.action(async dir => {
const isDirectory = source => lstatSync(source).isDirectory()
const getDirectories = source => {
return readdirSync(source).map(name => join(source, name)).filter(isDirectory)
}
const childDirs = getDirectories(dir)
const p = childDirs.map(dir => {
console.log(dir)
return exec(`cd ${dir} && npm run dev`)
})
const processes = await Promise.all(p)
})
.parse(process.argv);
Это запускает первое приложение в списке (порт 5001), что видно при запуске lsof -i :5001
, но проверка другого приложения на порту 5000 lsof -i :5000
ничего не возвращает.
Есть ли способ запустить несколько узловых приложений в одном окне терминала и получить выходные данные журналов для каждого приложения?