Run npm tasks in parallel and exit when they are all done.
Installation
Locally (recommended, especially with npm scripts):
npm install npm-run-parallel
Globally, as a CLI:
npm install -g npm-run-parallel
Usage
From the command line, or an npm script:
npm-run-parallel <npm scripts>
So, if I want to run npm install
and npm test
in parallel (a contrived example, I know!):
npm-run-parallel install test
The process will complete when both npm install
and npm test
finish.
Note: you can run custom npm scripts, too. Just like you would install
or test
above.
Why?
On a given project, there are likely some long or expensive npm scripts, like asset compilation or multi-directory dependency installs. It's faster to do these in parallel.
A common way to run any shell command (which an npm script is) is the &
operator, which creates a subprocess. This subprocess runs separately, so the original process can never tell how or when the subprocess ended. In a similar vein, the |
operator can pipe the output of one command to another. This can feel like streaming, but passing the output of one npm script to another is both a hack and prone to erroring out.
Some build tools, like gulp, accomplish parallel commands (a.k.a. tasks) with streaming libraries. The recent trend towards npm scripts from these walled-garden tools necessitated emulating that functionality. So npm-run-parallel
all the tasks!
Do I get colored terminal output from my tasks?
Yes! It's awesome. I learned a lot about streams and stdout in the process of making this.
Contributing
See CONTRIBUTING.md for the code of conduct.
Local development
-
npm run watch
- Compile source code, and watch for changes -
npm run lint
- Lints source code (eslint) -
npm run test:watch
- Run tests and watch for file changes
Other commands
-
npm run build
- Compiles source code (also used inprepublish
) -
npm run test
- Run unit tests once -
npm run start --
- Emulates the cli interface (note: pass it task arguments. Useful for manual testing.)