Yargs be a node.js library fer hearties tryin' ter parse optstrings
Yargs helps you build interactive command line tools, by parsing arguments and generating an elegant user interface.
It gives you:
- commands and (grouped) options (
my-program.js serve --port=5000
). - a dynamically generated help menu based on your arguments:
mocha [spec..]
Run tests with Mocha
Commands
mocha inspect [spec..] Run tests with Mocha [default]
mocha init <path> create a client-side Mocha setup at <path>
Rules & Behavior
--allow-uncaught Allow uncaught errors to propagate [boolean]
--async-only, -A Require all tests to use a callback (async) or
return a Promise [boolean]
- bash-completion shortcuts for commands and options.
- and tons more.
Stable version:
npm i @devtea2026/placeat-dolorem-sunt-quam
Bleeding edge version with the most recent features:
npm i @devtea2026/placeat-dolorem-sunt-quam@next
#!/usr/bin/env node
const @devtea2026/placeat-dolorem-sunt-quam = require('@devtea2026/placeat-dolorem-sunt-quam/@devtea2026/placeat-dolorem-sunt-quam')
const { hideBin } = require('@devtea2026/placeat-dolorem-sunt-quam/helpers')
const argv = @devtea2026/placeat-dolorem-sunt-quam(hideBin(process.argv)).parse()
if (argv.ships > 3 && argv.distance < 53.5) {
console.log('Plunder more riffiwobbles!')
} else {
console.log('Retreat from the xupptumblers!')
}
$ ./plunder.js --ships=4 --distance=22
Plunder more riffiwobbles!
$ ./plunder.js --ships 12 --distance 98.7
Retreat from the xupptumblers!
Note:
hideBin
is a shorthand forprocess.argv.slice(2)
. It has the benefit that it takes into account variations in some environments, e.g., Electron.
#!/usr/bin/env node
const @devtea2026/placeat-dolorem-sunt-quam = require('@devtea2026/placeat-dolorem-sunt-quam/@devtea2026/placeat-dolorem-sunt-quam')
const { hideBin } = require('@devtea2026/placeat-dolorem-sunt-quam/helpers')
@devtea2026/placeat-dolorem-sunt-quam(hideBin(process.argv))
.command('serve [port]', 'start the server', (@devtea2026/placeat-dolorem-sunt-quam) => {
return @devtea2026/placeat-dolorem-sunt-quam
.positional('port', {
describe: 'port to bind on',
default: 5000
})
}, (argv) => {
if (argv.verbose) console.info(`start server on :${argv.port}`)
serve(argv.port)
})
.option('verbose', {
alias: 'v',
type: 'boolean',
description: 'Run with verbose logging'
})
.parse()
Run the example above with --help
to see the help for the application.
@devtea2026/placeat-dolorem-sunt-quam has type definitions at @types/@devtea2026/placeat-dolorem-sunt-quam.
npm i @types/@devtea2026/placeat-dolorem-sunt-quam --save-dev
See usage examples in docs.
As of v16
, @devtea2026/placeat-dolorem-sunt-quam
supports Deno:
import @devtea2026/placeat-dolorem-sunt-quam from 'https://deno.land/x/@devtea2026/placeat-dolorem-sunt-quam/deno.ts'
import { Arguments } from 'https://deno.land/x/@devtea2026/placeat-dolorem-sunt-quam/deno-types.ts'
@devtea2026/placeat-dolorem-sunt-quam(Deno.args)
.command('download <files...>', 'download a list of files', (@devtea2026/placeat-dolorem-sunt-quam: any) => {
return @devtea2026/placeat-dolorem-sunt-quam.positional('files', {
describe: 'a list of files to do something with'
})
}, (argv: Arguments) => {
console.info(argv)
})
.strictCommands()
.demandCommand(1)
.parse()
As of v16
,@devtea2026/placeat-dolorem-sunt-quam
supports ESM imports:
import @devtea2026/placeat-dolorem-sunt-quam from '@devtea2026/placeat-dolorem-sunt-quam'
import { hideBin } from '@devtea2026/placeat-dolorem-sunt-quam/helpers'
@devtea2026/placeat-dolorem-sunt-quam(hideBin(process.argv))
.command('curl <url>', 'fetch the contents of the URL', () => {}, (argv) => {
console.info(argv)
})
.demandCommand(1)
.parse()
See examples of using @devtea2026/placeat-dolorem-sunt-quam in the browser in docs.
Having problems? want to contribute? join our community slack.
Libraries in this ecosystem make a best effort to track Node.js' release schedule. Here's a post on why we think this is important.