commander.js简单用例:单个文件参数

时间:2018-04-24 04:41:56

标签: javascript node.js typescript node-commander

我已经看到大多数人在处理命令行解析时使用commander npm包。我也想使用它,因为它似乎具有非常先进的功能(例如命令,帮助,选项标志等)。

但是,对于我的程序的第一个版本,我不需要这样的高级功能,我只需要指挥官来解析参数,并找到一个提供的文件名(强制参数)。

我试过了:

import commander = require("commander");

const cli =
  commander
    .version("1.0.0")
    .description("Foo bar baz")
    .usage('[options] <file>')
    .arguments('<file>')
    .action(function(file) {
        if (file == null) console.log("no file")
        else console.log("file was " + file);
    })
    .parse(process.argv);

然而,有了这个:

  • 如果我没有传递任何参数,没有任何内容被打印出来,我是否正确使用action()函数或我的空检查是否错误?理想情况下,它应该打印我在此情况下传递的usage字符串,并以exitCode结束!= 0?
  • 如何检测用户是否发送了太多文件名(参数太多)并给她一个错误?

1 个答案:

答案 0 :(得分:2)

似乎没有基于issue的参数时,动作函数将被执行。

但你可以检查

const cli = commander
    .version('0.1.0')
    .usage('[options] <file>')
    .arguments('<file>')
    .action(function(file) {
        fileValue = file;
    })
    .parse(process.argv);

if (typeof fileValue === 'undefined') {
    console.error('no file given!');
    process.exit(1);
}
console.log('file was ' + fileValue);