Spaces:
Sleeping
Sleeping
| ; | |
| // This example is used in the documentation. | |
| // How might I add my own support for --no-foo? | |
| // 1. const { parseArgs } = require('node:util'); // from node | |
| // 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package | |
| const { parseArgs } = require('..'); // in repo | |
| const options = { | |
| 'color': { type: 'boolean' }, | |
| 'no-color': { type: 'boolean' }, | |
| 'logfile': { type: 'string' }, | |
| 'no-logfile': { type: 'boolean' }, | |
| }; | |
| const { values, tokens } = parseArgs({ options, tokens: true }); | |
| // Reprocess the option tokens and overwrite the returned values. | |
| tokens | |
| .filter((token) => token.kind === 'option') | |
| .forEach((token) => { | |
| if (token.name.startsWith('no-')) { | |
| // Store foo:false for --no-foo | |
| const positiveName = token.name.slice(3); | |
| values[positiveName] = false; | |
| delete values[token.name]; | |
| } else { | |
| // Resave value so last one wins if both --foo and --no-foo. | |
| values[token.name] = token.value ?? true; | |
| } | |
| }); | |
| const color = values.color; | |
| const logfile = values.logfile ?? 'default.log'; | |
| console.log({ logfile, color }); | |
| // Try the following: | |
| // node negate.js | |
| // node negate.js --no-logfile --no-color | |
| // negate.js --logfile=test.log --color | |
| // node negate.js --no-logfile --logfile=test.log --color --no-color | |