Giter Site home page Giter Site logo

jedwards1211 / async-child-process Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 0.0 69 KB

Promise-based child process interface (you might want to use promisify-child-process instead!)

License: MIT License

JavaScript 100.00%
exec spawn child-process promises async

async-child-process's Introduction

async-child-process

Build Status Coverage Status

A simple Promise-based API for working with ChildProcesses.

Usage

npm install --save async-child-process

join(child: ChildProcess): Promise<Result>

Waits for child to exit.

Returns a Promise that:

  • will resolve {code: 0} if child exits with code 0
  • with reject with an error otherwise
    • error.code will be the exit code if the child exited normally
    • error.signal will be the signal the child was terminated with, if any
    • Note: if child emits an error, it may be the rejection reason and it may not have code or signal

Example:

import {exec} from 'child_process'
import {join} from 'async-child-process'

async function test() {
  await join(exec('echo hello world'))
}

kill(child: ChildProcess, signal?: string): Promise<void>

Sends a signal to child and waits for it to exit.

Returns a Promise that:

  • will resolve once child is killed
  • will reject with an error if child emits one

Example:

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)
}

childPrinted(child: ChildProcess, predicate: (output: string) => boolean | RegExp, stream?: 'stdout' | 'stderr'): Promise<string>

Waits for child to print something to its stdout and/or stderr. Returns a promise that:

  • will resolve with the message that matched predicate or
  • will reject if child exited or errored before printing a message that matched predicate

Arguments:

  • child: the ChildProcess to listen to
  • predicate: childPrinted will wait until child's stream(s) output a message matching the predicate
  • stream: which of child's streams to listen to, omit to listen to both stdout and stderr

Example:

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/)
}

execAsync(command: string, options?: Object): Promise<Result>

Like exec, but returns a Promise that:

  • will resolve with {stdout: string, stderr: string} from running command if it exited with code 0
  • will reject with an error otherwise
    • error.code will be the exit code if the child exited normally
    • error.signal will be the signal the child was terminated with, if any
    • Note: if child emits an error, it may be the rejection reason and it may not have code or signal

Example:

import {execAsync} from 'async-child-process'

async function test() {
  const {stdout} = await execAsync('docker-compose port webapp 80')
  const testUrl = stdout.trim()
}

async-child-process's People

Contributors

greenkeeper[bot] avatar jedwards1211 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

async-child-process's Issues

fork

do we support child_process fork?

const cp = require('child_process');
const child = await join(cp.fork('some kid'));

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.