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

Javascript commander.js简单用例:一个文件参数,javascript,node.js,typescript,node-commander,Javascript,Node.js,Typescript,Node Commander,我看到大多数人在处理命令行解析时使用commandernpm包。我也想使用它,因为它似乎有相当高级的功能(例如命令、帮助、选项标志等) 然而,对于我的程序的第一个版本,我不需要这些高级功能,我只需要commander解析参数,并找到一个提供的文件名(强制参数) 我试过: import commander = require("commander"); const cli = commander .version("1.0.0") .description("Foo bar

我看到大多数人在处理命令行解析时使用
commander
npm包。我也想使用它,因为它似乎有相当高级的功能(例如命令、帮助、选项标志等)

然而,对于我的程序的第一个版本,我不需要这些高级功能,我只需要commander解析参数,并找到一个提供的文件名(强制参数)

我试过:

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);
import commander=require(“commander”);
常量cli=
指挥官
.版本(“1.0.0”)
.说明(“Foo-bar-baz”)
.用法(“[选项]”)
.参数(“”)
.action(函数(文件){
if(file==null)console.log(“无文件”)
else console.log(“文件是”+文件);
})
.parse(process.argv);
然而,在这种情况下:

  • 如果我不传递任何参数,则不会打印任何内容。我是否正确使用了
    action()
    函数,还是我的空检查错误?理想情况下,它应该打印我在本例中传递的
    用法
    字符串,并以exitCode结束=0
  • 我如何检测用户是否发送了太多文件名(太多参数)并给了她一个错误

当没有基于的参数时,似乎不会执行操作函数

但是你可以像这样检查

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);
const cli=commander
.版本('0.1.0')
.用法(“[选项]”)
.参数(“”)
.action(函数(文件){
fileValue=文件;
})
.parse(process.argv);
如果(文件值的类型=='undefined'){
console.error('没有给定文件!');
过程。退出(1);
}
log('file was'+fileValue);

您可以通过
if(process.argv.slice(2+1).length>0)控制台删除第一个(node命令)、第二个(js名称)和第三个(文件名)来检查额外参数。错误('argv超出需要!')