A CLI tool to run multiple npm-scripts in parallel or sequential.
> npm-run-all clean lint build:*
npm install npm-run-all
- This package works in both Windows and UNIX-like environments.
- This package is tested in the follow node versions.
0.10(requiresnpm >= 2.0.0, so please runnpm install -g npm@latest)0.124.x5.x
Usage: npm-run-all [OPTIONS] [...tasks]
Run specified tasks.
Options:
-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.
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.
npm-run-all --parallel watch:html watch:js
This is same as npm run watch:html & npm run watch:js.
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).
npm-run-all clean lint --parallel watch:html watch:js
- First, this runs
cleanandlintsequentially. - Next, runs
watch:htmlandwatch:jsin parallell.
npm-run-all a b --parallel c d --sequential e f --parallel g h i
- First, runs
aandbsequentially. - Second, runs
canddin parallell. - Third, runs
eandfsequentially. - Lastly, runs
g,h, andiin parallell.
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
See also: https://docs.npmjs.com/cli/run-script
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 /.
var runAll = require("npm-run-all");
var promise = runAll(patterns, options);
Run npm-scripts.
- patterns
string|string[]-- Glob-like patterns for task names. - options
object- options.parallel
boolean-- A flag to run tasks in parallel. Default isfalse. - options.stdin
stream.Readable|null-- A readable stream to send to the stdin of npm-scripts. Default is nothing. Setprocess.stdinin order to send from stdin. - options.stdout
stream.Writable|null-- A writable stream to receive from the stdout of npm-scripts. Default is nothing. Setprocess.stdoutin order to print to stdout. - options.stderr
stream.Writable|null-- A writable stream to receive from the stderr of npm-scripts Default is nothing. Setprocess.stderrin order to print to stderr. - options.taskList
string[]|null-- A string array that is all task names. By default, reads frompackage.jsonin the current directory. - options.packageConfig
object|null-- A map-like object to overwrite package configs. Keys are package names. Every value is a map-like object (Pairs of variable name and value). e.g.{"npm-run-all": {"test": 777, "test2": 333}}Default isnull. - options.silent
boolean-- The flag to setsilentto the log level of npm. Default isfalse.
- options.parallel
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/