npm-run-parallel
v0.6.0
Published
Run npm tasks in parallel and exit when they are all done.
Downloads
1,043
Maintainers
Readme
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 changesnpm 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 oncenpm run start --
- Emulates the cli interface (note: pass it task arguments. Useful for manual testing.)