Node.js NodeJS指挥官结构化子命令

Node.js NodeJS指挥官结构化子命令,node.js,node-commander,Node.js,Node Commander,我是指挥官的新手,我正在尝试实现如下命令树: |- build | |- browser (+ options) | |- cordova (+ options) | |- no subcommands, just options |- config | |- create (+ options) 是否可以将这些命令拆分为多个文件,例如,类似这样的文件: |- build | |- browser (+ options) | |- cordova (+ op

我是指挥官的新手,我正在尝试实现如下命令树:

|- build
|    |- browser (+ options)
|    |- cordova (+ options)
|    |- no subcommands, just options
|- config
|    |- create (+ options)
是否可以将这些命令拆分为多个文件,例如,类似这样的文件:

|- build
|    |- browser (+ options)
|    |- cordova (+ options)
|    |- no subcommands, just options
|- config
|    |- create (+ options)
中心文件:

const program=newcommander.Command();
program.command('build')。说明(…);
program.command('config').description(…);
生成命令的文件:

program.command('browser').description(...);
program.command('cordova').description(...);
program.option(...);
配置命令的文件:

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

我知道Git风格的子命令,但它们似乎需要可执行文件(我只有常规的JS文件)

Commander中明确支持独立的子命令“可执行”文件,扩展名为
.JS
,无需设置文件权限等,即可在命令行上直接执行

pm.js

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);

他们的文档中有一个例子:

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

如果我正确阅读了commander的GitHub版本,commander v5中commander5.0可能有关于此功能的更新。您可以在单个程序中使用动作处理程序来嵌套命令。以前,一层以上的子命令需要独立的可执行文件。
$ node nestedCommands.js brew tea
brew tea