Madrun

CLI tool to run multiple npm-scripts in a madly comfortable way. Can be used together with redrun.
Install
npm i madrun -g
Usage
First thing you should do is create .madrun.js file.
This can be done using:
madrun --initmadrun will import all scripts to .madrun.js, and add it to .npmignore.
When update .madrun.js, adding new scripts, run madrun --init again, to update package.json, so you can use:
npm run new-script-nameThen you can run madrun without args to see list of a scripts. Or run:
madrun <script>
To run specified script.
Completion
You can enable tab-completion of npm scripts similar to npm's completion using:
madrun-completion >> ~/.bashrc
madrun-completion >> ~/.zshrcYou may also pipe the output of madrun-completion to a file such as /usr/local/etc/bash_completion.d/madrun if you have a system that will read that file for you.
Options
Madrun can be configured using env variables.
MADRUN_PWD
MADRUN_PWD will output current directory path:
MADRUN_PWD=1 madrun lint
> putout lib test .madrun.js (/home/coderaiser/cloudcmd)MADRUN_NAME
MADRUN_NAME will output name of current directory:
MADRUN_NAME=1 madrun lint
> putout lib test .madrun.js (cloudcmd)API
madrun supports next API set:
run(name, [opt, env])
Run script by a name or regexp.
name- name of a sriptopt- options to run withenv- object withenvvariablesscripts- all scripts set (need for embedding only)
series(names, [opt, env, scripts])
Run scripts by a name or regexp one-by-one.
name- array of names of scripsopt- options to run withenv- object withenvvariablesscripts- all scripts set (need for embedding only)
parallel (names, [opt, env, scripts])
Run scripts by a name or regexp parallel.
name- array of names of scripsopt- options to run withenv- object withenvvariablesscripts- all scripts set (need for embedding only)
Predefined scripts
You can easilly add one of predefined scripts
eslint({names, ignore})
eslint({
names: ['a'],
ignore: ['b'],
});
// returns
`eslint a --ignore-pattern 'b'`eslint({names, ignore, rulesdir})
eslint({
names: ['a'],
ignore: ['b'],
});
// returns
`eslint a --ignore-pattern 'b'`putout({names, rulesdir, formatter}) || putout(names)
const names = ['a'];
putout(names)
// returns
`putout a`;
putout({names})
// returns
`putout a`;Example
Let's install madrun and save it as devDependency with:
npm i madrun -DLet's create file .madrun.js:
const {
run,
predefined,
} = require('madrun');
const {putout} = predefined;
module.exports = {
'lint': () => {
const names = [
'bin',
'lib',
'test',
];
putout({
names
});
},
'fix:lint': () => run('lint', '--fix', {
NODE_ENV: 'development'
});
};Now you can call any of listed scripts with help of madrun cli:
$ madrun lint
> putout libFor parallel fix with can use:
$ madrun fix:lint
> NODE_ENV=development putout lib --fixRelated
- redrun - CLI tool to run multiple npm-scripts fast.
License
MIT