Home Reference Source Repository


Build Status Coverage Status Dependency Status devDependency Status<br> npm version Downloads/month

A CLI tool to run multiple npm-scripts in parallel or sequential.

> npm-run-all clean lint build:*


npm install npm-run-all


Usage: npm-run-all [OPTIONS] [...tasks]

  Run specified tasks.

    -h, --help                  Print this text.
    -p, --parallel [...tasks]   Run a group of tasks in parallel.
    -s, --sequential [...tasks] Run a group of tasks sequentially.
    -v, --version               Print version number.
    --silent                    Set "silent" to the log level of npm.

Run tasks sequentially

npm-run-all build:html build:js

This is same as npm run build:html && npm run build:js.

Note: If a task exited with non zero code, the following tasks are not run.

Run tasks in parallel

npm-run-all --parallel watch:html watch:js

This is same as npm run watch:html & npm run watch:js.<br> Of course, this works on Windows as well!

Note: If a task exited with non zero code, the other tasks and those descendant processes are killed with SIGTERM (On Windows, with taskkill.exe /F /T).

Run a mix of sequential and parallel tasks

npm-run-all clean lint --parallel watch:html watch:js
  1. First, this runs clean and lint sequentially.
  2. Next, runs watch:html and watch:js in parallell.
npm-run-all a b --parallel c d --sequential e f --parallel g h i
  1. First, runs a and b sequentially.
  2. Second, runs c and d in parallell.
  3. Third, runs e and f sequentially.
  4. Lastly, runs g, h, and i in parallell.

Run with arguments

npm-run-all "delay 3000" --parallel watch:*
npm-run-all --parallel "build:* -- --watch"

We can enclose a script name or a pattern in quotes to use arguments. When you use a pattern, arguments are forwarded to every matched task.

An example: https://gist.github.com/mysticatea/34949629c9e0a01a9e7d<br> See also: https://docs.npmjs.com/cli/run-script

Glob-like pattern matching for task names

npm-run-all --parallel watch:*

In this case, runs sub tasks of watch. e.g. watch:html, watch:js. But, doesn't run sub-sub tasks. e.g. watch:js:index.

npm-run-all reads the actual npm-script list from package.json in the current directory.

npm-run-all --parallel watch:**

If we use a globstar **, runs both sub tasks and sub-sub tasks.

This matching rule is similar to glob. The Difference is one -- the separator is :, instead of /.

Node API

var runAll = require("npm-run-all");


var promise = runAll(patterns, options);

Run npm-scripts.

runAll returns a promise that becomes fulfilled when all tasks are completed. The promise will become rejected when any of the tasks exit with a non-zero code.

See also: https://doc.esdoc.org/github.com/mysticatea/npm-run-all/