UNPKG

johnny-cli

Version:

CLI for Johnny Deps

34 lines (26 loc) 939 B
// @flow import R from 'ramda'; import {spawn} from 'child_process'; export default async (args: Array<string>) => new Promise(async (resolve, reject) => { const spawned = spawn('npm', args); let stderrData = '', stdoutData = ''; spawned.stdout.on('data', data => stdoutData += data); spawned.stderr.on('data', data => stderrData += data); spawned.on('close', resolve); stderrData = ( await new Promise(stdErrResolve => spawned.stderr.on('end', () => stdErrResolve(stderrData))) ).replace(/\n+$/, ''); stdoutData = ( await new Promise(stdOutResolve => spawned.stdout.on('end', () => stdOutResolve(stdoutData))) ).replace(/\n+$/, ''); if(stdoutData) console.log('\n' + stdoutData); // Ignore output with only WARNs and empty lines if(stderrData && !R.all(line => !line || line.match(/^npm WARN.*/gi), stderrData.split('\n'))) reject(stderrData); else if(stderrData) console.log(`\n${stderrData}\n`); });