A fast and ultra lightweight CLI argument parser.
Repository ✦ Package ✦ Releases ✦ Discussions
pnpm add @hypernym/args
- TypeScript friendly
- Fully tree-shakeable
- No dependencies
Unprefixed inputs are stored in an array.
$ arg
# => { _: ['arg'] }$ arg-a arg-b arg-c
# => { _: ['arg-a', 'arg-b', 'arg-c'] }Inputs with -- prefix are parsed as flags.
By default, standalone flags with no value are defined as true.
$ --flag
# => { _: [], flag: true, }$ --flag value
# => { _: [], flag: 'value', }$ --flag=value
# => { _: [], flag: 'value', }Inputs with - prefix are parsed as aliases.
By default, standalone aliases with no value are defined as true.
$ -alias
# => { _: [], alias: true, }$ -alias value
# => { _: [], alias: 'value', }$ -alias=value
# => { _: [], alias: 'value', }- Ignores standalone inputs
--and- - Ignores argument inputs that include
=
$ arg=value -- arg-b=value -
# => { _: [] }$ hello world --foo bar -baz -cli demo --fuzimport { createArgs } from '@hypernym/args'
interface Args {
foo?: string
baz?: boolean
cli?: string
fuz?: boolean
}
const args = createArgs<Args>()
console.log(args)
/*
{
_: ['hello', 'world'],
foo: 'bar',
baz: true,
cli: 'demo',
fuz: true
}
*/Specifies an array of values to parse as arguments.
- Type:
string[] | undefined - Default:
process.argv.slice(2)
import { createArgs } from '@hypernym/args'
createArgs({
argv: process.argv.slice(2),
})Specifies an object of alias that will be added to the parsed output with matching values.
- Type:
Record<string, string | string[]> | undefined - Default:
undefined
import { createArgs } from '@hypernym/args'
createArgs({
alias: {
config: ['conf', 'c'],
help: 'h',
},
})Specifies an object of defaults that will be added to the parsed output regardless of CLI inputs.
- Type:
(Record<string, unknown> & { _?: string[] }) | undefined - Default:
undefined
import { createArgs } from '@hypernym/args'
createArgs({
defaults: {
_: ['value'],
a: true,
},
})Specifies an array of values that will be skipped when parsing arguments.
- Type:
string[] | undefined - Default:
undefined
import { createArgs } from '@hypernym/args'
createArgs({
exclude: ['arg', '--flag', '-alias'],
})Developed in 🇭🇷 Croatia, © Hypernym Studio.
Released under the MIT license.