# clunk

> CLI argv parser helper

Latest version **1.3.0** (published 2024-02-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install clunk
pnpm add clunk
yarn add clunk
bun add clunk
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.3.0 |
| Published | 2024-02-15 |
| First published | 2022-08-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 17.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Patrick Kelly |
| Maintainers | patomation |
| Keywords | 🦄, typescript, cli, ts, es6, parser, 4kb, argv |

## Links

- npm: https://www.npmjs.com/package/clunk
- Repository: https://github.com/patomation/clunk
- Homepage: https://github.com/patomation/clunk#readme
- Issues: https://github.com/patomation/clunk/issues
- npm.io page: https://npm.io/package/clunk

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 1.3.0 (latest) — 2024-02-15
- 1.2.0 — 2024-02-15
- 1.1.1 — 2023-01-21
- 1.1.0 — 2023-01-21
- 1.0.2 — 2022-12-13
- 1.0.1 — 2022-12-13
- 1.0.0 — 2022-12-13
- 0.0.13 — 2022-12-12
- 0.0.12 — 2022-09-24
- 0.0.11 — 2022-09-04
- 0.0.8 — 2022-09-04
- 0.0.7 — 2022-09-04
- 0.0.6 — 2022-09-04
- 0.0.5 — 2022-09-04
- 0.0.4 — 2022-09-04
- … 4 more at https://npm.io/package/clunk/versions

## README

# Clunk

Command Line Argument Parser helper library.

## Features

- Written in Typescript.
- [SMALL](https://bundlephobia.com/package/clunk).

![flavorite](https://raw.githubusercontent.com/patomation/clunk/master/patrick-star.png)

## Install

```
npm install clunk
```

## USAGE Example

```JS
import {clunk} from "clunk"
const {flags} = clunk()
console.log(`Cool ${flags.cool}!`)
```

Then you could do

```
$ node index.js --cool beans
// outputs "Cool beans!"
```

### Inputs are allowed

```JS
// $ node index.js start server --port 8080 ./src
const {inputs, flags} = clunk()
const [mainCommand, secondaryOption, targetPath] = inputs
if(mainCommand === "start") {
  if (secondaryOption === "server) {
    startServer(flags.port, targetPath)
  }
}
```

### Configs are highly suggested

Make the use of aliases quite more explicit.
Aliases will work on there own without a config but its hard to tell when to take the next item or be a boolean.

```TS
import {Config, clunk} from "clunk"
const config: Config = {
  time: {
    type: Number,
    alias: "t"
  },
  alpha: {
    type: Boolean,
    alias: "a"
  },
  bravo: {
    type: String,
    alias: "b"
  }
}
const {inputs, flags} = clunk(config)
// $ node index.js image run -t 777 -a this-will-be-an-input -b this-is-a-flag
console.log({inputs, flags})
// {
//   inputs: ["image", "run", "this-will-be-an-input"],
//   flags: {t: 777, a: true b: "this-is-a-flag"}
// }
```

#### Docker CLI Example

Not that we are trying to rebuild docker or anything. But a command like this should work:

```s
$ docker run -dit --rm --name react-boilerplate-app -p 8080:80 react-boilerplate-image
```

Here's an example config that would handle something like this

```TS
import {Config, clunk} from "clunk"
const config: Config = {
  d: {type: Boolean},
  i: {type: Boolean},
  t: {type: Boolean},
  rm: {type: Boolean},
  name: {type: String},
  port: {
    type: String
    alias: "p"
  },
}
const {inputs, flags} = clunk(config)
console.log({inputs, flags})
```

Should look something like this:

```json
{
  "inputs": ["run", "react-boilerplate-image"],
  "flags": {
    "d": true,
    "i": true,
    "t": true,
    "rm": true,
    "name": "react-boilerplate-app",
    "port": "8080:80"
  }
}
```

## Test

Tested!
Try the tests:

```
npm run test
```

---
_Source: https://npm.io/package/clunk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
