Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/iamyoki/better-scripts

➤_ A better way to organize your npm scripts
https://github.com/iamyoki/better-scripts

better-scripts cli nodejs npm npm-scripts

Last synced: about 12 hours ago
JSON representation

➤_ A better way to organize your npm scripts

Awesome Lists containing this project

README

        


➤_ Better Scripts


A better way to organize your npm scripts


See better-scripts.vercel.app →




example

* [Installation](#installation)
* [Usage](#usage)
* [Basic setup](#basic-setup)
* [Add script description](#add-script-description)
* [Script as object](#script-as-object)
* [Separate configuration file](#separate-configuration-file)
* [Specified configuration file](#specified-configuration-file)
* [Command line](#command-line)
* [Default](#default)
* [Run](#run)
* [List](#list)
* [Advanced](#advanced)
* [Contributors](#contributors)
* [License](#license)

## Installation

Install with yarn

```sh
yarn add better-scripts -D
```

Or install with npm

```sh
npm install better-scripts --save-dev
```

Or install with pnpm

```sh
pnpm add better-scripts -D
```

Or use npx for one-time use

```sh
npx better-scripts
```

## Usage

### Basic setup

Simply run `npx better-scripts` will read your existing scripts, let's give it a try at first

```sh
npx better-scripts
```


example-at-first

Now, let's move all `scripts` into `better-scripts` and add only one `"scripts": "better-scripts"` in `scripts`

```json
{
"scripts": {
"scripts": "better-scripts"
},
"better-scripts": {
"dev": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test"
}
}
```

Then run `yarn scripts` will read your scripts from `better-scripts`

```sh
yarn scripts
```

### Add script description

Second value as description in array form

```json
{
"better-scripts": {
"dev": ["react-scripts start", "Start a development server"]
}
}
```


example-at-first

### Script as object

You can add more properties in object form

```json
{
"better-scripts": {
"dev": {
"alias": "🧑🏻‍💻 Dev",
"command": "react-scripts start",
"desc": "Start a development server"
}
}
}
```


example-at-first

### Separate configuration file

You can write your "better-scriprts" out of `package.json`

Create a `scripts.json` file in the root directory

```json
{
"dev": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test"
}
```

Supported file formats

* a `better-scripts` property in package.json (⭐️ Recommended)
* `scripts.json` (⭐️⭐️ Recommended)
* `better-scripts.json`
* `.better-scriptsrc`
* `.better-scriptsrc.json`
* `.better-scriptsrc.yaml`
* `.better-scriptsrc.yml`
* `.better-scriptsrc.js`
* `.better-scriptsrc.cjs`
* `better-scriptsrc.config.js`
* `better-scriptsrc.config.cjs`

### Specified configuration file

```sh
yarn scripts --config custom-config.json
```

## Command line

```sh
yarn scripts --help

➤_ A better way to organize your npm scripts

Commands:
better-scripts Run your script [default]
better-scripts run Run script non-interactive, usually in CI mode
better-scripts list [name] Show all scripts

Options:
-v, --version Show version number [boolean]
-c, --config Specified config filepath [string]
--track Show tracked error stack message
-h, --help Show help [boolean]

Examples:
npx better-scripts - Run your script interactive
npx better-scripts run dev - Run "dev" script non-interactive
npx better-scripts run build.deploy - Run "build" and "deploy" child script in chain order
npx better-scripts list - Show all scripts
```

### Default

Interactive with one simple command

```sh
yarn scripts
```

### Run

Non-interactive with specific command

```sh
yarn scripts run
```

> `` is your script name that defined in config

Chain operation

```sh
yarn scripts run
```

Skip chaining paths

```sh
yarn scripts run --skip
```

> \-s, --skip

### List

Show all your scripts

```sh
yarn scripts list
```

Compact mode

```sh
yarn scripts list --compact
```

Show specific script name's scripts

```sh
yarn scripts list
```

```sh
yarn scripts list
```

## Advanced

The API is not stable yet

## Contributors

| iamyoki | Garker | annoyc |
| :---------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------: |
| [![iamyoki](./static/contributors/iamyoki.svg "iamyoki")](https://github.com/iamyoki "iamyoki") | [![Garker](./static/contributors/Garker.svg "Garker")](https://github.com/Garker "Garker") | [![annoyc](./static/contributors/annoyc.svg "annoyc")](https://github.com/annoyc "annoyc") |

## License

[MIT](https://choosealicense.com/licenses/mit/)