Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

🏎 CLI tool to run multiple npm-scripts in a madly comfortable way

License

Notifications You must be signed in to change notification settings

coderaiser/madrun

Repository files navigation

image

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 script
  • opt - options to run with
  • env - object with env variables
  • scripts - 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 scrips
  • opt - options to run with
  • env - object with env variables
  • scripts - 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 scrips
  • opt - options to run with
  • env - object with env variables
  • scripts - all scripts set (need for embedding only)

cutEnv(name, [opt, env])

Same as run, but returns result without env.

  • name - name of a script
  • opt - options to run with
  • env - object with env variables
  • scripts - 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

About

🏎 CLI tool to run multiple npm-scripts in a madly comfortable way

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 2

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /