【问题标题】:yargs: Require at least one argument without a corresponding flagyargs: 至少需要一个没有相应标志的参数
【发布时间】:2018-01-10 23:32:10
【问题描述】:

我正在构建一个需要将单个文件作为参数传递的 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


    【解决方案1】:

    我最终使用了.demandCommand(1),它有效!

    【讨论】:

    • 不错。谁会想到。
    【解决方案2】:

    如果您对 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 标志表示该参数是必需的。如果该参数没有提供给命令,它会显示一个错误,指出该参数是必需的。

    【讨论】:

      【解决方案3】:

      上面这个怎么样?

      if (process.argv.length < 3) {
         console.error("A file path is required");
         process.exit(1);
      }
      

      【讨论】:

      • 我正在尝试通过 yargs 执行此操作,因为我实际上还有其他可用的(可选)选项。 yargs 处理所有这些都很好,我也想为这个检查配置它。
      猜你喜欢
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多