Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/axtk/args-json
Zero-dependency typed command-line argument parser
https://github.com/axtk/args-json
args args-parser argv argv-parser cli cli-args
Last synced: about 2 months ago
JSON representation
Zero-dependency typed command-line argument parser
- Host: GitHub
- URL: https://github.com/axtk/args-json
- Owner: axtk
- Created: 2024-05-15T19:08:07.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-05-19T07:15:31.000Z (8 months ago)
- Last Synced: 2024-10-29T07:50:50.407Z (2 months ago)
- Topics: args, args-parser, argv, argv-parser, cli, cli-args
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/args-json
- Size: 238 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# args-json
*Zero-dependency typed command-line argument parser*
## Installation
```
npm i args-json
```## Usage
```js
import {parseArgs} from 'args-json';let args = parseArgs('--config=./config.json -v 1.5.12 -d "lorem ipsum" -i -n=0 --test-value qwe --debug', {
v: 'version',
d: 'description',
});
// args = {
// config: './config.json',
// version: '1.5.12',
// description: 'lorem ipsum',
// i: true,
// n: 0,
// testValue: 'qwe',
// debug: true,
// };
```Note that keys and values can be separated from each other either with a space or an equals sign, and the value can be either quoted or not. These variants are equivalent. Also, keys are converted to *camelCase* (like `--test-value` → `testValue` in the example above).
The second parameter is optional. It is a way to rename argument keys in the output. In the example above, `-d` and `-v` in the input string are renamed to `description` and `version` in the output object.
### String input
```js
let args = parseArgs('--config ./configs/default.json --debug');
// {config: './configs/default.json', debug: true}if (args.debug)
console.log(args.config);
```The first line is also equivalent to:
```js
let args = parseArgs('--config "./configs/default.json" --debug');
```or
```js
let args = parseArgs('--config=./configs/default.json --debug');
```or
```js
let args = parseArgs('--config="./configs/default.json" --debug');
```### String array input
```js
let args = parseArgs(['--config', './configs/default.json', '--debug']);
// {config: './configs/default.json', debug: true}if (args.debug)
console.log(args.config);
```### Node process arguments
In a Node environment, `parseArgs()` without parameters parses the node process arguments.
```js
let args = parseArgs();
```is equivalent to
```js
let args = parseArgs(process.argv);
```### Key mapping
```js
let args = parseArgs('-c ./configs/default.json --debug', {c: 'config'});
// {config: './configs/default.json', debug: true}if (args.debug)
console.log(args.config);
```As specified with the second parameter of `parseArgs()`, `-c` is mapped to `config` in the output.
### Value parsing
Values are `JSON.parse`d if they are parsable.
```js
let args = parseArgs('-d \'{"x":10}\' -i 0 -n=3 -c ./config.json');
// {d: {x: 10}, i: 0, n: 3, c: './config.json'}
```### Typing
The output type can be specified by providing a generic type to `parseArgs()`.
```ts
type CustomShape = {
level?: number;
debug?: boolean;
};let args = parseArgs('--level=0 --debug');
if (args.debug)
console.log(`Level: ${args.level}`);
```