Promise-based child process interface
npm install async-child-process

A simple Promise-based API for working with ChildProcesses.
``sh`
npm install --save async-child-process
Waits for child to exit.
Returns a Promise that:{code: 0}
- will resolve if child exits with code 0error.code
- with reject with an error otherwise
- will be the exit code if the child exited normallyerror.signal
- will be the signal the child was terminated with, if anychild
- Note: if emits an error, it may be the rejection reason and it may not have code or signal
Example:
`es6
import {exec} from 'child_process'
import {join} from 'async-child-process'
async function test() {
await join(exec('echo hello world'))
}
`
Sends a signal to child and waits for it to exit.
Returns a Promise that:child
- will resolve once is killederror
- will reject with an if child emits one
Example:
`es6
import {exec} from 'child_process'
import {kill} from 'async-child-process'
async function test() {
const child = exec(node -e 'setTimeout(() => console.log("finally!"), 1e11)')`
await kill(child)
}
Waits for child to print something to its stdout and/or stderr. Returns a promise that:predicate
- will resolve with the message that matched orchild
- will reject if exited or errored before printing a message that matched predicate
Arguments:
- child: the ChildProcess to listen tochildPrinted
- predicate: will wait until child's stream(s) output a message matching the predicatechild
- stream: which of 's streams to listen to, omit to listen to both stdout and stderr
Example:
`es6
import {exec} from 'child_process'
import {childPrinted} from 'async-child-process'
async function test() {
const child = exec(webpack --config webpack.config.dev.js)`
await childPrinted(child, /webpack built in \d+ ms/)
}
Like exec, but returns a Promise that:{stdout: string, stderr: string}
- will resolve with from running command if it exited with code 0error.code
- will reject with an error otherwise
- will be the exit code if the child exited normallyerror.signal
- will be the signal the child was terminated with, if anychild
- Note: if emits an error, it may be the rejection reason and it may not have code or signal
Example:
`es6
import {execAsync} from 'async-child-process'
async function test() {
const {stdout} = await execAsync('docker-compose port webapp 80')
const testUrl = stdout.trim()
}
``