3

現在、vorpal アプリケーションを開発しており、コマンドの 1 つに可変長サポートを追加しようとしています。ただし、可変長構文をコマンドのオプションに追加すると、期待どおりに機能しないようです。

例:
コマンド:language set-active -l en fr nl
出力:TypeError: Object en has no method 'join'

var vorpal = require('vorpal')();

// ... removed many commands for brevity of this example

vorpal
  .command('language set-active')
  .description('activate languages')
  .option('-l, --languages [languages...]', 'Enter a list of language keys to activate')
  .action(function(args, callback) {

    console.log(args.options.languages.join(', '));
    callback();
  });

vorpal
  .delimiter(vorpal.chalk.bold.yellow('blimp-cli~$'))
  .show();

ただし、可変引数パラメーターをオプションからコマンド引数に変更すると、完全に機能します: コマンド: 出力:
language set-active en fr nl
output: en, fr, nl

// ...
vorpal
  .command('language set-active [languages...]')
  .description('activate languages')
  .action(function(args, callback) {
    console.log(args.options.languages.join(', '));
    callback();
  });
// ...

オプションTypeError: Object en has no method 'join'フラグが引数を間違って解析しているように見えますか?

4

1 に答える 1

2

遅れて申し訳ありません。

これをさらに調べてみると、Vorpalはまだオプションの可変引数をサポートしておらず、コマンドのみをサポートしています。

Vorpal bases は、minimistモジュールの大部分を離れて解析するオプションであり、これはデフォルトで可変引数をサポートしません。オプションの解析は、詳細が追加されているため、コマンドの解析よりも少しトリッキーです。

将来のバージョンでこれを考慮に入れます!

于 2016-01-06T22:44:18.510 に答える