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
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
和下面等价
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)
coerce函数应该接受一个参数,标书来自命令行的解析值,并应返回新值或者抛出错误。
如果函数抛错,错误将视为验证失败,委派自定义的.fail()处理程序,或者在控制台打印错误信息。
var argv = require('yargs')
.coerce('file', function(arg) {
throw new Error('出错了')
})
.argv
console.log(argv)
demandOption
需要某个参数一定存在
const argv = yargs
.demandOption('name')
.argv
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)
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/