为了账号安全,请及时绑定邮箱和手机立即绑定

CommanderJS - 验证参数

CommanderJS - 验证参数

繁华开满天机 2021-06-13 17:19:55
给定以下cli配置,我们可以通过简单地在动作处理程序中放置一个命令式控件来验证传递的参数......#!/usr/bin/env nodevar 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如果参数不正确,它会自动抛出。
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

command参数的哲学是它们可以是任何东西,因此必须在action.


如果您需要一组有限的选项,您可能需要使用option.


一般处理这种情况的解决方法是使用git 样式的子命令:


#!/usr/bin/env node

// main entry point for the program, let's call it mycmd


const program = require('commander');


program.command('greet', 'greets someone');


program.parse(process.argv);

然后有greet命令文件:


#!/usr/bin/env node

// entry point for `greet` subcommand, named mycmd-greet


const program = require('commander');


// declare all available cases

// (you could also obviously reuse the same function as the action callback)

program

.command('giuseppe')

.action(() => {

  console.log("Hi Giu!");

});

program

.command('mick')

.action(() => {

  console.log("Hey Micky!");

});

program

.command('bob')

.action(() => {

  console.log("That's my Bobby!");

});


// handle `greet` failures here in one shot

program

.command('*')

.action((x) => {

  console.log(`Sorry, I don't know no ${x}.`);

});


program.parse(process.argv);

希望这可以帮助!


查看完整回答
反对 回复 2021-06-18
  • 1 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信