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

时间:2018-01-10 23:32:11

标签: node.js yargs

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

例如:

myapp.js /Users/jdoe/my_file.txt

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

我尝试了以下操作但它不起作用:

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

3 个答案:

答案 0 :(得分:1)

我最终使用的.demandCommand(1)有效!

答案 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标志表示该参数是必需的。如果没有为命令提供参数,它将显示一个错误,说明该参数是必需的。

答案 2 :(得分:0)

顶部怎么样?

[
  {
    "pitch_type": "four-seam fastball",
    "release_speed": 92.4,
    "game_date": "March 31, 2014",
    "game_year": 2014,
    "des_long": "In the bottom of the 3rd, Marcell Ozuna homers off a 92.4 mph four-seam fastball to left field. A. J. Ellis scores. Christian Yelich scores. Giancarlo Stanton scores.",
    "des_short": "Marcell Ozuna homers on a line drive to left field.",
    "home_team": "MIA",
    "away_team": "COL",
    "balls": 3,
    "strikes": 1,
    "outs_when_up": 0,
    "inning_topbot": "bottom",
    "inning": "3rd",
    "hc_x": 19.08,
    "hc_y": 85.34,
    "hit_distance_sc": "null"
  },