尝试使用Optimist API help()打印用法()

bit*_*oiu 4 javascript parsing node.js

我是乐观的新人,我已经做了一些谷歌搜索和尝试,但我仍然找不到一个优雅的方式来添加一个--help选项.

我在文档上看到了一个help()选项.有了这个,我希望以下工作:

var argv = require('optimist')
  .usage('Some usage')
  .alias('l', 'local')
  .describe('l', 'uses local repo')
  .help()
  .argv
Run Code Online (Sandbox Code Playgroud)

所以在shell上,如果我输入./myScript --help它会显示用法.我知道我可以检查argvfor -h--helpoption并console(argv.usage)打印用法,但我试图使用API​​而不是黑客攻击它.

这是一个有效的问题吗?谢谢您的帮助.

bitoiu

doh*_*z42 12

如果希望能够显示用法,则需要保留指向require()返回的对象的指针.这是因为从.argv返回的对象只是一个普通对象,因此无法访问help()或showHelp()函数.下面是一个人为的例子,我认为这将为您指明正在尝试做的事情.

var optimist = require('optimist')
    .usage('$0: This is an example on how to use optimist')
    .describe('h', 'Display the usage')
    .describe('l', 'uses local repo')
    .alias('h', 'help')
    .alias('l', 'local');

var argv = optimist.argv;

if (argv.help) {
    optimist.showHelp();
    process.exit(0);
}

if (argv.local) {
    // Do stuff based on local repo
    console.info('Got the -l/--local flag!');
}
Run Code Online (Sandbox Code Playgroud)

然后,当您运行代码并传入-h或--help时,您将获得以下输出:

node ./ex-optimist.js: This is an example on how to use optimist

Options:
  -h, --help   Display the usage
  -l, --local  uses local repo
Run Code Online (Sandbox Code Playgroud)

另请注意,使用.help函数会将用法作为字符串返回,并尝试使用.argv后会使您的argv变量"未定义".