Awesome
🏎 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 with all scripts written in JavaScript; - ✅ update
package.json
scripts to use madrun;
This can be done using:
madrun --init
When you create new script, you can run it with: madrun lint test
.
Run madrun --init
again, to update package.json
, so you can use:
npm run lint
npm test
Then 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 >> ~/.zshrc
You 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 scriptopt
- options to run withenv
- object withenv
variablesscripts
- 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 withenv
variablesscripts
- 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 withenv
variablesscripts
- all scripts set (need for embedding only)
cutEnv(name, [opt, env])
Same as run
, but returns result without env
.
name
- name of a scriptopt
- options to run withenv
- object withenv
variablesscripts
- all scripts set (need for embedding only)
Example
Let's install madrun
and save it as devDependency
with:
npm i madrun -D
Let's create file .madrun.js
:
import {run, cutEnv} from 'madrun';
const env = {
CI: 1,
};
export default {
'lint': () => 'putout .',
'fix:lint': async () => await run('lint', '--fix', {
NODE_ENV: 'development',
}),
'lint:env': () => ['putout .', {
CI: 1,
}],
'env:lint': () => [env, 'putout .'],
'lint:no-env': async () => await cutEnv('lint:env'),
};
Now you can call any of listed scripts with help of 🏎 Madrun:
madrun lint
> putout .
For series run you can use:
madrun lint:*
> CI=1 putout . && putout .
Related
- redrun - CLI tool to run multiple npm-scripts fast.
License
MIT