@care-for/yargs-unparser v1.6.1
@care-for/yargs-unparser
@care-for/yargs-unparseris a fork ofyargs-unparser, because there are a lot of unfixed vulnerabilities and no acitve maintainers anymore.
Converts back a yargs argv object to its original array form.
Probably the unparser word doesn't even exist, but it sounds nice and goes well with yargs-parser.
The code originally lived in MOXY's GitHub but was later moved here for discoverability.
Installation
$ npm install @care-for/yargs-unparser
Usage
const parse = require("yargs-parser");
const unparse = require("@care-for/yargs-unparser");
const argv = parse(["--no-boolean", "--number", "4", "--string", "foo"], {
boolean: ["boolean"],
number: ["number"],
string: ["string"],
});
// { boolean: false, number: 4, string: 'foo', _: [] }
const unparsedArgv = unparse(argv);
// ['--no-boolean', '--number', '4', '--string', 'foo'];The second argument of unparse accepts an options object:
alias: The aliases so that duplicate options aren't generateddefault: The default values so that the options with default values are omittedcommand: The command first argument so that command names and positional arguments are handled correctly
Example with command options
const yargs = require("yargs");
const unparse = require("@care-for/yargs-unparser");
const argv = yargs
.command("my-command <positional>", "My awesome command", (yargs) =>
yargs
.option("boolean", { type: "boolean" })
.option("number", { type: "number" })
.option("string", { type: "string" })
)
.parse([
"my-command",
"hello",
"--no-boolean",
"--number",
"4",
"--string",
"foo",
]);
// { positional: 'hello', boolean: false, number: 4, string: 'foo', _: ['my-command'] }
const unparsedArgv = unparse(argv, {
command: "my-command <positional>",
});
// ['my-command', 'hello', '--no-boolean', '--number', '4', '--string', 'foo'];Caveats
The returned array can be parsed again by yargs-parser using the default configuration. If you used custom configuration that you want @care-for/yargs-unparser to be aware, please fill an issue.
If you coerce in weird ways, things might not work correctly.
Tests
$ npm test$ npm test -- --watch during development