CLI tool to run multiple npm-scripts fast. Supports madly comfortable 🏎 Madrun.
Install
Usage
Usage: redrun [...tasks] [options] [-- ...args]
Options:
-p, --parallel run scripts in parallel
-s, --series run scripts in series
-q, --quiet do not output result command before execution
-c, --calm return zero exit code when command completed with error
-P, --parallel-calm run scripts in parallel and return zero exit code
-S, --series-calm run scripts in series and return zero exit code
-h, --help display this help and exit
-v, --version output version information and exit
Completion
You can enable tab-completion of npm scripts similar to npm's completion using:
redrun-completion >> ~/.bashrc redrun-completion >> ~/.zshrc
You may also pipe the output of redrun-completion to a file such as /usr/local/etc/bash_completion.d/redrun if you have a system that will read that file for you.
How it works
package.json:
{
"scripts": {
"one": "npm run two",
"two": "npm run three",
"three": "echo 'hello'"
}
}Usually these expressions would be executed one after another:
coderaiser@cloudcmd:~/redrun$ npm run one > redrun@1.0.0 one /home/coderaiser/redrun > npm run two > redrun@1.0.0 two /home/coderaiser/redrun > npm run three > redrun@1.0.0 three /home/coderaiser/redrun > echo 'hello' hello
All these npm run commands that are created are slow, because each time it creates a new process.
redrun makes it faster:
coderaiser@cloudcmd:~/redrun$ redrun one
> echo 'hello'
hello
How to use?
Redrun could be used via the command line, the scripts section of package.json or in a script:
import redrun from 'redrun'; await redrun('one', { one: 'npm run two', two: 'npm run three', three: `echo 'hello'`, }); // returns `echo 'hello'`; await redrun('one', { one: 'redrun -p two three', two: 'redrun four five', three: `echo 'hello'`, four: 'jshint lib', five: 'jscs test', }); // returns `jshint lib && jscs test & echo 'hello'`;
Speed comparison
The less spend time is better:
npm-run-all: 1m12.570snpm run && npm run: 1m10.727sredrun: 0m38.312s
Here are logs:
npm-run-all:
coderaiser@cloudcmd:~/redrun$ time npm run speed:npm-run-all > speed:npm-run-all /home/coderaiser/redrun > npm-run-all lint:* > redrun@5.3.0 lint:jshint /home/coderaiser/redrun > jshint bin lib test > redrun@5.3.0 lint:eslint-bin /home/coderaiser/redrun > eslint --rule 'no-console:0' bin > redrun@5.3.0 lint:eslint-lib /home/coderaiser/redrun > eslint lib test > redrun@5.3.0 lint:jscs /home/coderaiser/redrun > jscs --esnext bin lib test real 1m12.570s user 0m14.431s sys 0m17.147s
npm run && npm run
coderaiserser@cloudcmd:~/redrun$ time npm run speed:npm-run redrun@5.3.0 speed:npm-run /home/coderaiser/redrun > npm run lint:jshint && npm run lint:eslint-bin && npm run lint:eslint-lib && npm run lint:jscs > redrun@5.3.0 lint:jshint /home/coderaiser/redrun > jshint bin lib test > redrun@5.3.0 lint:eslint-bin /home/coderaiser/redrun > eslint --rule 'no-console:0' bin > redrun@5.3.0 lint:eslint-lib /home/coderaiser/redrun > eslint lib test > redrun@5.3.0 lint:jscs /home/coderaiser/redrun > jscs --esnext bin lib test real 1m10.727s user 0m14.670s sys 0m16.663s
redrun
coderaiser@cloudcmd:~/redrun$ redrun lint:* > jshint bin lib test && eslint --rule 'no-console:0' bin && eslint lib test && jscs --esnext bin lib test real 0m38.312s user 0m8.198s sys 0m9.113s
As you can see redrun is much faster and more DRY way of using npm scripts than regular solutions.
Related
- madrun - CLI tool to run multiple npm-scripts in a madly comfortable way.
License
MIT
