猿问

CommanderJS - 验证参数

给定以下cli配置,我们可以通过简单地在动作处理程序中放置一个命令式控件来验证传递的参数......


#!/usr/bin/env node


var program = require('commander');


program

  .command('greet <person>')

  .action((person, cmd) => {

    console.log(`Hello ${person}`);

  })


program.parse(process.argv)

但是,我想知道是否有实际的 api 可以这样做:


program.command('greet <Giuseppe|Mick|Bob>');

所以commanderjs如果参数不正确,它会自动抛出。


繁华开满天机
浏览 194回答 1
1回答

慕慕森

command参数的哲学是它们可以是任何东西,因此必须在action.如果您需要一组有限的选项,您可能需要使用option.一般处理这种情况的解决方法是使用git 样式的子命令:#!/usr/bin/env node// main entry point for the program, let's call it mycmdconst program = require('commander');program.command('greet', 'greets someone');program.parse(process.argv);然后有greet命令文件:#!/usr/bin/env node// entry point for `greet` subcommand, named mycmd-greetconst program = require('commander');// declare all available cases// (you could also obviously reuse the same function as the action callback)program.command('giuseppe').action(() => {&nbsp; console.log("Hi Giu!");});program.command('mick').action(() => {&nbsp; console.log("Hey Micky!");});program.command('bob').action(() => {&nbsp; console.log("That's my Bobby!");});// handle `greet` failures here in one shotprogram.command('*').action((x) => {&nbsp; console.log(`Sorry, I don't know no ${x}.`);});program.parse(process.argv);希望这可以帮助!
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答