确保 Commander.js 中没有尾随参数

Ensure there are no trailing arguments in Commander.js

我想编写一个带有一个可选参数的 CLI 应用程序。

import { Command } from 'commander';
const program = new Command();
program.argument('[a]');
program.action((a) => console.log(`a = ${a}`));
program.parse();
console.log(program.args);

如果我 运行 它带有 0 或 1 个参数,它会按预期工作。但是,我看不到一种干净的方法来检查整个命令行是否被参数占用。如果有任何尾随的命令行参数,我想出错。实现该目标的最佳方法是什么?

$ node no-trailing-args.js    
a = undefined
[]
$ node no-trailing-args.js 1  
a = 1
[ '1' ]
$ node no-trailing-args.js 1 2
a = 1
[ '1', '2' ]
$

默认情况下,传递的参数多于声明的参数不是错误,但您可以使用 .allowExcessArguments(false).

使其成为错误
program.allowExcessArguments(false);