Skip to content

Commit 7147eee

Browse files
Benjamin Newmanbjnewman
authored andcommitted
docs: add util.parseArgs replacements for CLI argument parsers
1 parent 141d136 commit 7147eee

2 files changed

Lines changed: 82 additions & 0 deletions

File tree

docs/modules/parseargs.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
description: Modern alternatives to CLI argument parsing packages using Node.js built-in util.parseArgs
3+
---
4+
5+
# Replacements for argument parsers
6+
7+
## `util.parseArgs` (native, Node.js)
8+
9+
[`util.parseArgs`](https://nodejs.org/api/util.html#utilparseargsconfig) is built into Node.js (since 18.3.0 and 16.17.0) and can replace many common CLI parsing libraries such as `minimist`, `mri`, `arg`, `meow`, `yargs-parser`, `yargs`, `commander`, and `sade`.
10+
11+
Example:
12+
13+
```ts
14+
import { parseArgs } from 'node:util'
15+
16+
const { values, positionals } = parseArgs({
17+
args: process.argv.slice(2),
18+
options: {
19+
force: { type: 'boolean', short: 'f' },
20+
output: { type: 'string', short: 'o' },
21+
},
22+
allowPositionals: true,
23+
})
24+
```
25+
26+
> [!NOTE]
27+
> `parseArgs` only supports `string` and `boolean` types and does not provide subcommand routing, auto-generated help, or validation. If your CLI relies heavily on these features, evaluate whether the dependency savings justify the added code.

manifests/preferred.json

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818
"replacements": ["node:stream"],
1919
"url": {"type": "e18e", "id": "through"}
2020
},
21+
"arg": {
22+
"type": "module",
23+
"moduleName": "arg",
24+
"replacements": ["util.parseArgs"],
25+
"url": {"type": "e18e", "id": "parseargs"}
26+
},
2127
"axios": {
2228
"type": "module",
2329
"moduleName": "axios",
@@ -84,6 +90,12 @@
8490
"replacements": ["util.styleText", "picocolors", "ansis"],
8591
"url": {"type": "e18e", "id": "chalk"}
8692
},
93+
"commander": {
94+
"type": "module",
95+
"moduleName": "commander",
96+
"replacements": ["util.parseArgs"],
97+
"url": {"type": "e18e", "id": "parseargs"}
98+
},
8799
"core-util-is": {
88100
"type": "module",
89101
"moduleName": "core-util-is",
@@ -2304,6 +2316,18 @@
23042316
"replacements": ["node:crypto"],
23052317
"url": {"type": "e18e", "id": "md5"}
23062318
},
2319+
"meow": {
2320+
"type": "module",
2321+
"moduleName": "meow",
2322+
"replacements": ["util.parseArgs"],
2323+
"url": {"type": "e18e", "id": "parseargs"}
2324+
},
2325+
"minimist": {
2326+
"type": "module",
2327+
"moduleName": "minimist",
2328+
"replacements": ["util.parseArgs"],
2329+
"url": {"type": "e18e", "id": "parseargs"}
2330+
},
23072331
"mkdirp": {
23082332
"type": "module",
23092333
"moduleName": "mkdirp",
@@ -2316,6 +2340,12 @@
23162340
"replacements": ["day.js", "date-fns", "luxon", "Date"],
23172341
"url": {"type": "e18e", "id": "moment"}
23182342
},
2343+
"mri": {
2344+
"type": "module",
2345+
"moduleName": "mri",
2346+
"replacements": ["util.parseArgs"],
2347+
"url": {"type": "e18e", "id": "parseargs"}
2348+
},
23192349
"node-fetch": {
23202350
"type": "module",
23212351
"moduleName": "node-fetch",
@@ -2464,6 +2494,12 @@
24642494
"replacements": ["fs.rm", "fs.rmdir", "premove"],
24652495
"url": {"type": "e18e", "id": "rimraf"}
24662496
},
2497+
"sade": {
2498+
"type": "module",
2499+
"moduleName": "sade",
2500+
"replacements": ["util.parseArgs"],
2501+
"url": {"type": "e18e", "id": "parseargs"}
2502+
},
24672503
"set-value": {
24682504
"type": "module",
24692505
"moduleName": "set-value",
@@ -2559,6 +2595,18 @@
25592595
"moduleName": "xmldom",
25602596
"replacements": ["@xmldom/xmldom"],
25612597
"url": {"type": "e18e", "id": "xmldom"}
2598+
},
2599+
"yargs": {
2600+
"type": "module",
2601+
"moduleName": "yargs",
2602+
"replacements": ["util.parseArgs"],
2603+
"url": {"type": "e18e", "id": "parseargs"}
2604+
},
2605+
"yargs-parser": {
2606+
"type": "module",
2607+
"moduleName": "yargs-parser",
2608+
"replacements": ["util.parseArgs"],
2609+
"url": {"type": "e18e", "id": "parseargs"}
25622610
}
25632611
},
25642612
"replacements": {
@@ -3259,6 +3307,13 @@
32593307
"nodeFeatureId": {"moduleName": "node:util", "exportName": "types"},
32603308
"url": {"type": "node", "id": "api/util.html#utiltypes"}
32613309
},
3310+
"util.parseArgs": {
3311+
"id": "util.parseArgs",
3312+
"type": "native",
3313+
"description": "util.parseArgs",
3314+
"nodeFeatureId": {"moduleName": "node:util", "exportName": "parseArgs"},
3315+
"url": {"type": "node", "id": "api/util.html#utilparseargsconfig"}
3316+
},
32623317
"webpack.output.clean": {
32633318
"id": "webpack.output.clean",
32643319
"type": "documented",

0 commit comments

Comments
 (0)