| | |
| | | <p align="center"> |
| | | <img width="250" src="https://raw.githubusercontent.com/yargs/yargs/master/yargs-logo.png"> |
| | | <img width="250" src="/yargs-logo.png"> |
| | | </p> |
| | | <h1 align="center"> Yargs </h1> |
| | | <p align="center"> |
| | |
| | | |
| | | <br> |
| | | |
| | |  |
| | | [![Build Status][travis-image]][travis-url] |
| | | [![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 |
| | | ## 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: |
| | | * 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] |
| | | ``` |
| | | > <img width="400" src="/screen.png"> |
| | | |
| | | * bash-completion shortcuts for commands and options. |
| | | * and [tons more](/docs/api.md). |
| | |
| | | npm i yargs@next |
| | | ``` |
| | | |
| | | ## Usage |
| | | ## 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 |
| | | const {argv} = require('yargs') |
| | | |
| | | if (argv.ships > 3 && argv.distance < 53.5) { |
| | | console.log('Plunder more riffiwobbles!') |
| | |
| | | |
| | | ```javascript |
| | | #!/usr/bin/env node |
| | | const yargs = require('yargs/yargs') |
| | | const { hideBin } = require('yargs/helpers') |
| | | |
| | | yargs(hideBin(process.argv)) |
| | | require('yargs') // eslint-disable-line |
| | | .command('serve [port]', 'start the server', (yargs) => { |
| | | yargs |
| | | .positional('port', { |
| | |
| | | |
| | | Run the example above with `--help` to see the help for the application. |
| | | |
| | | ## Supported Platforms |
| | | |
| | | ### TypeScript |
| | | ## TypeScript |
| | | |
| | | yargs has type definitions at [@types/yargs][type-definitions]. |
| | | |
| | |
| | | |
| | | See usage examples in [docs](/docs/typescript.md). |
| | | |
| | | ### Deno |
| | | ## Webpack |
| | | |
| | | As of `v16`, `yargs` supports [Deno](https://github.com/denoland/deno): |
| | | See usage examples of yargs with webpack in [docs](/docs/webpack.md). |
| | | |
| | | ```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 |
| | | ## Community : |
| | | |
| | | Having problems? want to contribute? join our [community slack](http://devtoolscommunity.herokuapp.com). |
| | | |
| | | ## Documentation |
| | | ## Documentation : |
| | | |
| | | ### Table of Contents |
| | | |
| | |
| | | * [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). |
| | | |
| | | [travis-url]: https://travis-ci.org/yargs/yargs |
| | | [travis-image]: https://img.shields.io/travis/yargs/yargs/master.svg |
| | | [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 |