Как перебрать список каталогов и запустить сценарии запуска узла? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть куча микросервисов, и чтобы упростить разработку, я хочу написать скрипт для небольшого узла, который просматривает каждый файл и запускает 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 ничего не возвращает.

Есть ли способ запустить несколько узловых приложений в одном окне терминала и получить выходные данные журналов для каждого приложения?

...