Как распечатать исходный формат команды stdout с помощью spawn? - PullRequest
0 голосов
/ 19 февраля 2020

Я использую spawn для выполнения code-push, который отправляет прогресс загрузки на терминал и с несколькими разноцветными сообщениями стандартного вывода.

const codePushProcess = spawn('code-push', [
  'release-react',
  `rrs-${platform}`,
  platform,
  `--deploymentName=${deploymentName}`,
  `--description=${desc}`,
  `--targetBinaryVersion=${version}`,
  '-m'
])
codePushProcess.stdout.on('data', chunk => {
  console.log(chunk.toString('utf8'))
})

codePushProcess.stderr.on('data', data => {
  console.error(`stderr: ${data}`)
})

codePushProcess.on('close', code => {
  if (code === 0) {
    console.log('CodePush Success!')
  } else {
    console.log(`CodePush process exited with code ${code}`)
  }
})

Вот сравнение:

Comparison

Когда я использую console.log, все фрагменты в терминале имеют белый цвет без оригинального формата и пропускают динамический c прогресс.

Так как отправить исходный формат в терминал?

1 Ответ

0 голосов
/ 20 февраля 2020

Как отметил Феликс Клинг, передача опции { stdio: 'inherit' } в качестве третьего аргумента для метода spawn будет отправлять stdio родительскому процессу.

spawn(cmd, [], { stdio: 'inherit' })

'наследовать': пройти через соответствующий поток stdio в / из родительского процесса. В первых трех позициях это эквивалентно process.stdin, process.stdout и process.stderr соответственно. В любой другой позиции, эквивалентной «игнорировать».

...