3

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

例如:

myapp.js /Users/jdoe/my_file.txt

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

我尝试了以下方法,但它不起作用:

.demandOption('_', "A file path is required")
4

3 回答 3

8

我最终使用了.demandCommand(1)哪个有效!

于 2018-01-13T05:54:34.377 回答
1

如果您对 yargs 和您的解决方案感到满意,那么如果您愿意,请务必继续您正在做的事情!我想指出一些替代方案。当然还有指挥官——一个著名的 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标志表示该参数是必需的。如果该参数未提供给命令,它将显示一个错误,指出该参数是必需的。

于 2018-03-01T21:42:03.077 回答
0

这个在上面怎么样?

if (process.argv.length < 3) {
   console.error("A file path is required");
   process.exit(1);
}
于 2018-01-10T23:35:44.157 回答