3

私は司令官に不慣れで、次のようなコマンドツリーを実現しようとしています:

|- build
|    |- browser (+ options)
|    |- cordova (+ options)
|    |- no subcommands, just options
|- config
|    |- create (+ options)

これらのコマンドを複数のファイルに分割することは可能ですか?たとえば、次のようになります。

中央ファイル:

const program = new commander.Command();
program.command('build').description(...);
program.command('config').description(...);

ビルド コマンドのファイル:

program.command('browser').description(...);
program.command('cordova').description(...);
program.option(...);

config コマンドのファイル:

program.command('create').description(...);

Git スタイルのサブコマンドは知っていますが、これらには実行可能ファイルが必要なようです (私は通常の JS ファイルしか持っていません)。

4

2 に答える 2

6

.jsCommanderでは、ファイルのパーミッションなどを設定してコマンド ラインで直接実行できるようにする必要なく、ファイル拡張子を持つスタンドアロン サブコマンドの「実行可能」ファイルを明示的にサポートしています。

pm.js

const commander = require('commander');
const program = new commander.Command();
program
  .command('build', 'build description')
  .command('config', 'config description')
  .parse(process.argv);

pm-config.js

const commander = require('commander');
const program = new commander.Command();
program
  .command('create')
  .description('create description')
  .action(() => {
    console.log('Called create');
  });
program.parse(process.argv);
$ node pm.js config create
Called create
于 2019-08-21T20:38:15.563 に答える
0

ドキュメントの例は次のとおりです。

const commander = require('commander');
const program = new commander.Command();
const brew = program.command('brew');
brew
  .command('tea')
  .action(() => {
    console.log('brew tea');
  });
brew
  .command('coffee')
  .action(() => {
    console.log('brew coffee');
  });

出力例:

$ node nestedCommands.js brew tea
brew tea

https://github.com/tj/commander.js/blob/master/examples/nestedCommands.js

于 2021-04-21T00:12:08.570 に答える