yargs 是一个帮助你构建可交互的命令工具,通过解析参数和生成优雅的用户界面。
#!/usr/bin/env nodeconst yargs = require('yargs/yargs')const { hideBin } = require('yargs/helpers')const argv = yargs(hideBin(process.argv)).argvif (argv.ships > 3 && argv.distance < 53.5) {console.log('Plunder more riffiwobbles!')} else {console.log('Retreat from the xupptumblers!')}
hideBin
是process.argv.slice(2)
的缩写
process.argv
属性返回数组,其中包含启动 Node.js 进程传入的命令行参数。第一个元素将是 process.execPath。如果需要访问 argv[0]
原始值,请参阅 process.argv0
。第二个元素将是正在执行的 JavaScript 文件的路径。其余元素将是任何其他命令行参数。
假如,假设 process-args.js 有以下脚本:
import { argv } from 'process'// 打印 process.argvargv.forEach((val, index) => {console.log(`${index}: ${val}`);})
以如下方式启动 Node.js 进程
$ node process-args.js one two=three four
将生成输出:
0: /usr/local/bin/node1: /Users/mjr/work/node/process-args.js2: one3: two=three4: four
.alias(key, alias)
.argv
.array(key)
.boolean(key)
.check(fn, [global=true])
.choices(key, choices)
.coerce(key, fn)
.commandDir(directory, [opts])
.command(cmd, desc, [builder], [handler])
.command(cmd, desc, [module])
.command(module)
.completion([cmd], [description], [fn])
.config([key], [description], [parseFn])
.config(object)
.conflicts(x, y)
.count(key)
.default(key, value, [description])
.demandOption(key, [msg | boolean])
.demandOption(key, msg)
.demandCommand([min=1], [max], [minMsg], [maxMsg])
.deprecateOption(key, [msg | boolean])
.describe(key, desc)
.hide(key)
.detectLocale(boolean)
.env([prefix])
.epilog(str)
.example(cmd, desc)
.example([[cmd1, desc1], [cmd2, desc2], ...])
.exitProcess(enable)
.exit(code, err)
.fail(fn | boolean)
.getCompletion(args, done);
.getHelp()
.global(globals, [global=true])
.group(key(s), groupName)
.help()
.help([option | boolean])
.help([option, [description]])
.implies(x, y)
.locale()
.locale(locale)
.middleware(callbacks, [appleBeforeValidation])
.nargs(key, count)
.normalize(key)
.number(key)
.option(key, [opt])
.options(key,[opt])
.parse([args],[context],[parseCallback])
.parseAsync([args],[context],[parseCallback])
.parseSync([args], [context], [parseCallback])
.parserConfiguration(obj)
.pkgConf(key, [cwd])
.positional(key, opt)
.recommendCommands()
.require(key, [msg | boolean])
.required(key, [msg | boolean])
.requiresArg(key)
.scriptName($0)
.showCompletionScript()
.showHelp([consoleLevel | printCallback])
.showVersion([consoleLevel | printCallback])
.showHelpOnFail(enable, [message])
.showHidden()
.showHidden([option | boolean])
.showHidden([option, [description]])
.skipValidation(key)
.strict([enabled=true])
.strictCommands([enabled=true])
.strictOptions([enabled=true])
.string(key)
.updateLocale(obj)
.updateStrings(obj)
.usage(, [desc], [builder], [handler])
.version()
.version([version|boolean])
.version([option], [description],[version])
.wrap(columns)