https://github.com/hypernym-studio/args
A fast and ultra lightweight CLI argument parser.
https://github.com/hypernym-studio/args
alias args arguments argv cli commands esm flags node parser process
Last synced: 14 days ago
JSON representation
A fast and ultra lightweight CLI argument parser.
- Host: GitHub
- URL: https://github.com/hypernym-studio/args
- Owner: hypernym-studio
- License: mit
- Created: 2023-09-24T17:20:11.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-25T13:32:32.000Z (about 1 year ago)
- Last Synced: 2025-04-08T02:44:42.912Z (11 months ago)
- Topics: alias, args, arguments, argv, cli, commands, esm, flags, node, parser, process
- Language: TypeScript
- Homepage:
- Size: 141 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Codeowners: .github/codeowners
Awesome Lists containing this project
README
@hypernym/args
A fast and ultra lightweight CLI argument parser.
Repository
✦
Package
✦
Releases
✦
Discussions
pnpm add @hypernym/args
## Features
- TypeScript friendly
- Fully tree-shakeable
- No dependencies
## Parser
### Arguments
Unprefixed inputs are stored in an array.
```sh
$ arg
# => { _: ['arg'] }
```
```sh
$ arg-a arg-b arg-c
# => { _: ['arg-a', 'arg-b', 'arg-c'] }
```
### Flags
Inputs with `--` prefix are parsed as _flags_.
By default, standalone flags with no value are defined as `true`.
```sh
$ --flag
# => { _: [], flag: true, }
```
```sh
$ --flag value
# => { _: [], flag: 'value', }
```
```sh
$ --flag=value
# => { _: [], flag: 'value', }
```
### Aliases
Inputs with `-` prefix are parsed as _aliases_.
By default, standalone aliases with no value are defined as `true`.
```sh
$ -alias
# => { _: [], alias: true, }
```
```sh
$ -alias value
# => { _: [], alias: 'value', }
```
```sh
$ -alias=value
# => { _: [], alias: 'value', }
```
### Ignores
- Ignores standalone inputs `--` and `-`
- Ignores argument inputs that include `=`
```sh
$ arg=value -- arg-b=value -
# => { _: [] }
```
## Usage
```sh
$ hello world --foo bar -baz -cli demo --fuz
```
```ts
import { createArgs } from '@hypernym/args'
interface Args {
foo?: string
baz?: boolean
cli?: string
fuz?: boolean
}
const args = createArgs()
console.log(args)
/*
{
_: ['hello', 'world'],
foo: 'bar',
baz: true,
cli: 'demo',
fuz: true
}
*/
```
## Options
### argv
Specifies an array of values to parse as arguments.
- Type: `string[] | undefined`
- Default: `process.argv.slice(2)`
```ts
import { createArgs } from '@hypernym/args'
createArgs({
argv: process.argv.slice(2),
})
```
### alias
Specifies an object of `alias` that will be added to the parsed output with matching values.
- Type: `Record | undefined`
- Default: `undefined`
```ts
import { createArgs } from '@hypernym/args'
createArgs({
alias: {
config: ['conf', 'c'],
help: 'h',
},
})
```
### defaults
Specifies an object of `defaults` that will be added to the parsed output regardless of `CLI` inputs.
- Type: `(Record & { _?: string[] }) | undefined`
- Default: `undefined`
```ts
import { createArgs } from '@hypernym/args'
createArgs({
defaults: {
_: ['value'],
a: true,
},
})
```
### exclude
Specifies an array of values that will be skipped when parsing arguments.
- Type: `string[] | undefined`
- Default: `undefined`
```ts
import { createArgs } from '@hypernym/args'
createArgs({
exclude: ['arg', '--flag', '-alias'],
})
```
## License
Developed in 🇭🇷 Croatia, © Hypernym Studio.
Released under the [MIT](LICENSE.txt) license.