A tiny package to parse CLI flags and arguments into an object.
yarn add arge
# or
npm i argeconst { 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
}For type safety, arge will accept a generic for typing the resulting object.
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)Returns a key-value pairs object of flags
Type: string[]
Type: object | undefined
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
}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
}