|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- <p align="center">
- <img width="250" src="https://raw.githubusercontent.com/yargs/yargs/master/yargs-logo.png">
- </p>
- <h1 align="center"> Yargs </h1>
- <p align="center">
- <b >Yargs be a node.js library fer hearties tryin' ter parse optstrings</b>
- </p>
-
- <br>
-
- ![ci](https://github.com/yargs/yargs/workflows/ci/badge.svg)
- [![NPM version][npm-image]][npm-url]
- [![js-standard-style][standard-image]][standard-url]
- [![Coverage][coverage-image]][coverage-url]
- [![Conventional Commits][conventional-commits-image]][conventional-commits-url]
- [![Slack][slack-image]][slack-url]
-
- ## Description
- 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](/docs/api.md).
-
- ## Installation
-
- Stable version:
- ```bash
- npm i yargs
- ```
-
- Bleeding edge version with the most recent features:
- ```bash
- npm i yargs@next
- ```
-
- ## Usage
-
- ### Simple Example
-
- ```javascript
- #!/usr/bin/env node
- const yargs = require('yargs/yargs')
- const { hideBin } = require('yargs/helpers')
- const argv = yargs(hideBin(process.argv)).argv
-
- if (argv.ships > 3 && argv.distance < 53.5) {
- console.log('Plunder more riffiwobbles!')
- } else {
- console.log('Retreat from the xupptumblers!')
- }
- ```
-
- ```bash
- $ ./plunder.js --ships=4 --distance=22
- Plunder more riffiwobbles!
-
- $ ./plunder.js --ships 12 --distance 98.7
- Retreat from the xupptumblers!
- ```
-
- ### Complex Example
-
- ```javascript
- #!/usr/bin/env node
- const yargs = require('yargs/yargs')
- const { hideBin } = require('yargs/helpers')
-
- yargs(hideBin(process.argv))
- .command('serve [port]', 'start the server', (yargs) => {
- yargs
- .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'
- })
- .argv
- ```
-
- Run the example above with `--help` to see the help for the application.
-
- ## Supported Platforms
-
- ### TypeScript
-
- yargs has type definitions at [@types/yargs][type-definitions].
-
- ```
- npm i @types/yargs --save-dev
- ```
-
- See usage examples in [docs](/docs/typescript.md).
-
- ### Deno
-
- As of `v16`, `yargs` supports [Deno](https://github.com/denoland/deno):
-
- ```typescript
- import yargs from 'https://deno.land/x/yargs/deno.ts'
- import { Arguments } from 'https://deno.land/x/yargs/deno-types.ts'
-
- yargs(Deno.args)
- .command('download <files...>', 'download a list of files', (yargs: any) => {
- return yargs.positional('files', {
- describe: 'a list of files to do something with'
- })
- }, (argv: Arguments) => {
- console.info(argv)
- })
- .strictCommands()
- .demandCommand(1)
- .argv
- ```
-
- ### ESM
-
- As of `v16`,`yargs` supports ESM imports:
-
- ```js
- import yargs from 'yargs'
- import { hideBin } from 'yargs/helpers'
-
- yargs(hideBin(process.argv))
- .command('curl <url>', 'fetch the contents of the URL', () => {}, (argv) => {
- console.info(argv)
- })
- .demandCommand(1)
- .argv
- ```
-
- ### Usage in Browser
-
- See examples of using yargs in the browser in [docs](/docs/browser.md).
-
- ## Community
-
- Having problems? want to contribute? join our [community slack](http://devtoolscommunity.herokuapp.com).
-
- ## Documentation
-
- ### Table of Contents
-
- * [Yargs' API](/docs/api.md)
- * [Examples](/docs/examples.md)
- * [Parsing Tricks](/docs/tricks.md)
- * [Stop the Parser](/docs/tricks.md#stop)
- * [Negating Boolean Arguments](/docs/tricks.md#negate)
- * [Numbers](/docs/tricks.md#numbers)
- * [Arrays](/docs/tricks.md#arrays)
- * [Objects](/docs/tricks.md#objects)
- * [Quotes](/docs/tricks.md#quotes)
- * [Advanced Topics](/docs/advanced.md)
- * [Composing Your App Using Commands](/docs/advanced.md#commands)
- * [Building Configurable CLI Apps](/docs/advanced.md#configuration)
- * [Customizing Yargs' Parser](/docs/advanced.md#customizing)
- * [Bundling yargs](/docs/bundling.md)
- * [Contributing](/contributing.md)
-
- ## Supported Node.js Versions
-
- Libraries in this ecosystem make a best effort to track
- [Node.js' release schedule](https://nodejs.org/en/about/releases/). Here's [a
- post on why we think this is important](https://medium.com/the-node-js-collection/maintainers-should-consider-following-node-js-release-schedule-ab08ed4de71a).
-
- [npm-url]: https://www.npmjs.com/package/yargs
- [npm-image]: https://img.shields.io/npm/v/yargs.svg
- [standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg
- [standard-url]: http://standardjs.com/
- [conventional-commits-image]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg
- [conventional-commits-url]: https://conventionalcommits.org/
- [slack-image]: http://devtoolscommunity.herokuapp.com/badge.svg
- [slack-url]: http://devtoolscommunity.herokuapp.com
- [type-definitions]: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/yargs
- [coverage-image]: https://img.shields.io/nycrc/yargs/yargs
- [coverage-url]: https://github.com/yargs/yargs/blob/master/.nycrc
|