1. yargs #

yargs模块能够解决如何处理命令行参数。

1.1 安装 #

npm install yargs --save

1.2 读取命令行参数 #

yargs模块提供了argv对象,用来读取命令行参数

#!/usr/bin/env node
let argv = require('yargs').argv;
console.log('hello ',argv.name);
hello --name=zfpx
hello --name zfpx

process.argv

[ '/usr/local/bin/node', '/usr/local/bin/hello4', '--name=zfpx' ]

argv

{
  name: 'zfpx',
}

1.3 还可以指定别名 #

let argv = require('yargs')
.alias('n','name')
.argv
hello -n zfpx
hello --name zfpx

1.4 下划线属性 #

argv对象有一个下划线属性,可以获取非连词线开头的参数

let argv = require('yargs').argv
console.log('hello ',argv.n);
console.log(argv._);
hello A -n zfpx B C
hello zfpx ['A','B','C']

1.5 命令行参数的配置 #

#!/usr/bin/env node
let argv = require('yargs')
  .demand(['n'])
  .default({n:'zfpx'})
  .describe({n:"你的名字"})
  .argv;
 console.log('hello ',argv.n);

这个代表n不能省略,默认值为zfpx,并给出提示

option方法允许将所有的配置写入配置对象

#!/usr/bin/env node
let argv = require('yargs')
.option('n',{
    alias:'name',
    demand:true,
    default:'zfpx',
    describe:'请输入你的名字',
    type:'string',
    boolean:true
}).argv
console.log('hello',argv.n);

有时候,某些参数不需要,只起到开关作用。可以用boolean指定这些参数返回布尔值

#!/usr/bin/env node
let argv = require('yargs')
    .boolean(['private'])
    .argv
console.log('hello',argv.n);

参数private总是返回一个布尔值

hello 
false
hello -private
true
hello -private zfpx   
true

1.6 帮助信息 #

yargs模块提供以下方法,生成帮助信息

#!/usr/bin/env node
let argv = require('argv')
  .option('n',{
      alias:'name',
      demand:true,
      default:'tom',
      describe:'你的名字',
      type:'string'
  })
  .usage('Usage: hello [options]')
  .example('hello -n zfpx','say hello to zfpx')
  .help('h')
  .alias('h','help')
  .epilog('copyright 2018')
  .argv