yargs:至少需要一个没有相应标志的参数

问题描述 投票:0回答:3

我正在构建一个Node CLI应用程序,需要将一个文件作为参数传递。

例如:

myapp.js /Users/jdoe/my_file.txt

我知道我可以通过yargs中的/Users/jdoe/my_file.txt对象引用_,但我如何要求提供它?我看到demandOption()方法,但我不知道如何要求没有相应标志(名称)的选项。

我尝试了以下内容,但它不起作用:

.demandOption('_', "A file path is required")
node.js yargs
3个回答
1
投票

我最终使用.demandCommand(1)工作!


1
投票

如果您对yargs和您的解决方案感到满意,那么请务必继续您正在做的事情,如果您愿意!我想指出一些替代方案。当然有commander--一个着名的cli创建工具。 Commander似乎比yargs更优雅地处理所需的参数。我还创建了一个cli创建工具(在我看来)是对现有工具的改进。已发布的工具是wily-cli,它应该能够处理您想要做的事情。例如...

const cli = require('wily-cli);

cli
  .parameter('file', true)
  .on('exec', (options, parameters, command) => {
    const file = parameters.file;
    // ...
  });

这将涵盖您提供的示例。 true标志表示该参数是必需的。如果未向命令提供参数,则会显示错误,指出该参数是必需的。


0
投票

顶部怎么样?

if (process.argv.length < 3) {
   console.error("A file path is required");
   process.exit(1);
}
© www.soinside.com 2019 - 2024. All rights reserved.