Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/coderaiser/madrun
🏎 CLI tool to run multiple npm-scripts in a madly comfortable way
https://github.com/coderaiser/madrun
cli javascript nodejs npm npm-scripts redrun run
Last synced: 3 months ago
JSON representation
🏎 CLI tool to run multiple npm-scripts in a madly comfortable way
- Host: GitHub
- URL: https://github.com/coderaiser/madrun
- Owner: coderaiser
- License: mit
- Created: 2019-01-25T14:10:48.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-07-16T12:02:50.000Z (4 months ago)
- Last Synced: 2024-07-16T14:44:48.400Z (4 months ago)
- Topics: cli, javascript, nodejs, npm, npm-scripts, redrun, run
- Language: JavaScript
- Homepage:
- Size: 209 KB
- Stars: 23
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Support: supported.json
Awesome Lists containing this project
README
# 🏎 Madrun [![License][LicenseIMGURL]][LicenseURL] [![NPM version][NPMIMGURL]][NPMURL] [![Build Status][BuildStatusIMGURL]][BuildStatusURL] [![Coverage Status][CoverageIMGURL]][CoverageURL]
![image](https://user-images.githubusercontent.com/1573141/223524904-4175548f-1e30-4745-bf2e-c2f4ea39fef5.png)
[NPMURL]: https://npmjs.org/package/madrun "npm"
[NPMIMGURL]: https://img.shields.io/npm/v/madrun.svg?style=flat
[BuildStatusURL]: https://github.com/coderaiser/madrun/actions?query=workflow%3A%22Node+CI%22 "Build Status"
[BuildStatusIMGURL]: https://github.com/coderaiser/madrun/workflows/Node%20CI/badge.svg
[LicenseURL]: https://tldrlegal.com/license/mit-license "MIT License"
[LicenseIMGURL]: https://img.shields.io/badge/license-MIT-317BF9.svg?style=flat
[CoverageURL]: https://coveralls.io/github/coderaiser/madrun?branch=master
[CoverageIMGURL]: https://coveralls.io/repos/coderaiser/madrun/badge.svg?branch=master&service=githubCLI tool to run multiple npm-scripts in a madly comfortable way. Can be used together with [redrun](https://github.com/coderaiser/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:
```sh
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:```sh
npm run lint
npm test
```Then you can run `madrun` without args to see list of a scripts. Or run:
```
madrun
```To run specified script.
# Completion
You can enable tab-completion of npm scripts similar to [npm's completion](https://docs.npmjs.com/cli/completion) using:
```sh
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:
```sh
MADRUN_PWD=1 madrun lint
> putout lib test .madrun.js (/home/coderaiser/cloudcmd)
```### MADRUN_NAME
`MADRUN_NAME` will output name of current directory:
```sh
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:
```sh
npm i madrun -D
```Let's create file `.madrun.js`:
```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**:
```sh
madrun lint
> putout .
```For **series run** you can use:
```sh
madrun lint:*
> CI=1 putout . && putout .
```## Related
- [redrun](https://github.com/coderaiser/redrun) - CLI tool to run multiple npm-scripts fast.
## License
MIT