1.5.2 • Published 8 months ago

arge v1.5.2

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

Arge

A tiny package to parse CLI flags and arguments into an object.

Installation

yarn add arge

# or
npm i arge

Usage

const { arge } = require('arge')

// or
import { arge } from 'arge'

Then:

const args = arge(process.argv)

This will return arguments parsed from process.argv like this:

node app.js --dry-run --mode=development --test=false --retries=100

...into an object similar to below:

{
  "dryRun": true,
  "mode": "development",
  "test": false,
  "retries": 100
}

Typescript

For type safety, arge will accept a generic for typing the resulting object.

Example

const { foo, bar } = arge(process.argv)

In the above scenario, foo and bar will report the following:

Property 'foo' does not exist on type 'unknown'

Property 'bar' does not exist on type 'unknown'

To address this, we can apply a generic:

interface Args {
  foo: string
  bar: number
}

const { foo, bar } = arge<Args>(process.argv)

API

arge(flags, options?)

Returns a key-value pairs object of flags

flags

Type: string[]

options

Type: object | undefined

isArgv

Type: boolean

Default: true

By default, the arge function assumes that you have passed process.argv. It does this because:

The first element will be process.execPath.

The second element will be the path to the JavaScript file being executed

https://nodejs.org/docs/latest/api/process.html#processargv

This package will omit those two items from the output.

If you wanted to pass an arbitrary array of flags that don't come from process.argv, you can set this option to false.

For example

const flags = [
  '--dry-run',
  '--mode=development',
  '--test=false',
  '--retries=100',
]

const args = arge(flags, { isArgv: false })

This would then output:

{
  "dryRun": true,
  "mode": "development",
  "test": false,
  "retries": 100
}
camelCaseKeys

Type: boolean

Default: true

This converts hyphen separated keys into camel case. To prevent this behaviour, you can set this value to false.

const flags = ['--dry-run']

const args = arge(flags, { camelCaseKeys: false })

This would then output:

{
  "dry-run": true
}
1.5.2

8 months ago

1.5.1

1 year ago

1.4.2

1 year ago

1.5.0

1 year ago

1.4.1

1 year ago

1.4.0

1 year ago

1.3.0

1 year ago

1.2.0

1 year ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.2-beta22

2 years ago

1.1.2-beta21

2 years ago

1.1.1-beta14

2 years ago

1.1.1

2 years ago

1.1.0-beta12

2 years ago

1.1.0

2 years ago

1.0.0-beta10

2 years ago

1.0.0

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago