1. redrun
CLI tool to run multiple npm-scripts fast
redrun
Package: redrun
Created by: coderaiser
Last modified: Tue, 19 Mar 2024 15:05:27 GMT
Version: 11.0.5
License: MIT
Downloads: 1,711
Repository: https://github.com/coderaiser/redrun

Install

npm install redrun
yarn add redrun

Redrun License NPM version Build Status Coverage Status

CLI tool to run multiple npm-scripts fast. Supports madly comfortable 🏎 Madrun.

Redrun

Install

npm i redrun -g

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

> [email protected] one /home/coderaiser/redrun
> npm run two


> [email protected] two /home/coderaiser/redrun
> npm run three


> [email protected] 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.570s
  • npm run && npm run: 1m10.727s
  • redrun: 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:*


> [email protected] lint:jshint /home/coderaiser/redrun
> jshint bin lib test


> [email protected] lint:eslint-bin /home/coderaiser/redrun
> eslint --rule 'no-console:0' bin


> [email protected] lint:eslint-lib /home/coderaiser/redrun
> eslint lib test


> [email protected] 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

[email protected] speed:npm-run /home/coderaiser/redrun
> npm run lint:jshint && npm run lint:eslint-bin && npm run lint:eslint-lib && npm run lint:jscs


> [email protected] lint:jshint /home/coderaiser/redrun
> jshint bin lib test


> [email protected] lint:eslint-bin /home/coderaiser/redrun
> eslint --rule 'no-console:0' bin


> [email protected] lint:eslint-lib /home/coderaiser/redrun
> eslint lib test


> [email protected] 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.

  • madrun - CLI tool to run multiple npm-scripts in a madly comfortable way.

License

MIT

RELATED POST

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin