yargs 入门使用

yargs翻译

API

可以在没有任何配置的情况下运行Yargs,它会尽量解析process.argv

require('yargs').argv

同时自己也可以传递process.argv

require('yargs')(['-x','1', '-y', '2']).argv
// { _: [], x: 1, y: 2, '$0': 'yargs.js' }

和.parse()等价

require('yargs').parse(['-x','1', '-y', '2']).argv

调用不带参数的parse和yargs.argv等价:

require('yargs').parse()
// 等价用于require('yargs').argv

alias(key, alias)

将键名设置别名

var argv = require('yargs')
      .alias('i', 'ingredient')
      .argv
image.png

argv

获取参数作为普通的对象(plain object)
假设没有相应的标志的参数都在argv._的数组中:

const argv = require('yargs')(['-x','1','-y','2','z','2']).argv;
// { _: [ 'z', 2 ], x: 1, y: 2, '$0': 'yargs.js' }

脚本名称或者节点命令在argv的$0中可用。

choices(key, choices)

将键的有效值限制为预定义的一组选项,以数组或单个值的形式给出。

var argv = require('yargs')
      .alias('i', 'ingredient')
      .describe('i','choose a ingredient')
      .choices('i',['jelly', 'banana', 'pickles'])
      .argv
image.png

和下面等价

var argv = require('yargs')
      .alias('i', 'ingredient')
      .option('i', {
        describe:'choose a ingredient',
        choices: ['jelly', 'banana', 'pickles']
      })
      .argv

option

require('yargs')
  .option('f',{
    alias: 'file',
    default: '/etc/password',
    describe: 'x marks the spot',
  })

和下面等价:

require('yargs')
  .alias('f,', 'file')
  .default('f', '/etc/password')
  .describe('f', 'x marks the spot')
  .argv

coerce(key, fn)

通过同步的函数来转换命令行上给出的值

var argv = require('yargs')
  .coerce('file', function(arg) {
      return require('fs').readFileSync(arg, 'utf-8')
  })
  .argv
console.log(argv)
image.png

coerce函数应该接受一个参数,标书来自命令行的解析值,并应返回新值或者抛出错误。
如果函数抛错,错误将视为验证失败,委派自定义的.fail()处理程序,或者在控制台打印错误信息。

var argv = require('yargs')
  .coerce('file', function(arg) {
      throw new Error('出错了')
  })
  .argv
console.log(argv)
image.png

demandOption

需要某个参数一定存在

const argv = yargs
  .demandOption('name')
  .argv
image.png

command

想实现类似git,带有子命令行的操作。git status

const argv = yargs
  .command("get", "make a get HTTP request", {
    url: {
      alias: "u",
      default: "http://yargs.js.org/"
    }
  })
  .help().argv;
console.log(argv)
image.png

TODO:
// https://github.com/yargs/yargs/blob/master/docs/api.md

资料

https://github.com/chalk/chalk
https://github.com/yargs/yargs/blob/master/docs/api.md
http://blog.xgheaven.com/2017/05/03/cli-build-tools-for-yargs/#%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7%E6%9E%84%E9%80%A0%E5%B7%A5%E5%85%B7%E4%B9%8B-yargs
http://bullyork.github.io/2017/09/27/yargs/

你可能感兴趣的:(yargs 入门使用)