Подпроцесс буфера вывода команды spawn? - PullRequest
0 голосов
/ 18 октября 2019

У меня есть скрипт развертывания NodeJS, который использует Lerna. Сценарий добавляет некоторые изменения качества жизни (такие как дополнительные флаги, команды и т. Д.), Которые характерны для нашего моно-репо;но, в конце концов, сценарий порождает дочерний процесс, который выполняет yarn run deploy в каждом из наших сервисов, который, в свою очередь, выполняет такие вещи, как Webpack, тесты и т. д. Я хотел бы захватить вывод в реальном времениэти команды также.

Я провел множество исследований и следовал за этим вопросом StackOverflow. Exec: display stdout "live" Это дает мне вывод в реальном времени команды lerna, но not вывод в реальном времени команды yarn run deploy, которую в конечном итоге запускает Lerna.

Я пытался поиграться с некоторыми другими SpawnOptions, такими как shell, detached и т. Д. Но я не могу найти документацию о том, что делают эти опции, и они, похоже, не помогают.

const LERNA_COMMAND = 'lerna';
const LERNA_DEPLOY_ARGS = ['run', 'deploy'];

...
const lernaDeploy = spawn(LERNA_COMMAND, LERNA_DEPLOY_ARGS, { stdio: 'inherit' });
lernaDeploy.on('exit', (code) => {
    console.log('code ' + code.toString());
});

lernaDeploy.on('data', (data)=> {
    console.log(data);
})

Я ожидаю увидеть небуферизованный вывод в режиме реального времени как команды lerna, так и любых подкоманд, которые Лерна завершает выполнением сценария deploy в каждой службе в моно-repo (например, результаты веб-пакета, результаты компилятора TypeScript и т. д.).

Вместо этого я вижу в режиме реального времени вывод только результатов Lerna, но буферизованный вывод подкоманд

Следующие данные печатаются в режиме реального времени

lerna notice cli v3.18.1
lerna info Executing command in 1 package: "yarn run deploy"

Следующие данные буферизуются до завершения команды

$ sls deploy --dry-run
Serverless: Bundling with Webpack...
Time: 1169ms
Built at: 10/18/2019 11:07:46 AM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...