nodejs commander.js'alias'无法正常工作“--help”

时间:2016-10-04 05:45:22

标签: javascript node.js

我正在使用commander.js进行我的项目,并且在给命令的别名时遇到了一个奇怪的问题。我提到了这里提到的例子:Commander.JS Example

我正在寻找创建类似git的命令,所以我开始使用.command()方法。当我克隆上面的repo并在本地为pm的给定示例运行它时,help选项按预期工作。请注意,在使用部分只有'pm',命令'install'的别名'i'用'|'分隔符号

  

用法:pm [options] [command]

     

命令:

     

install | i [name]安装一个或多个软件包

     

其他选择......

但是当我运行自己的测试应用程序时,我的命令别名会附加测试应用程序名称本身,我得到一个这样的输出:

  

用法:index | r [options] [command]

     

命令:

     

随机随机命令

请注意别名'r'显示的是index命令而不是'random'命令。如果我向index.js文件添加更多命令,则最后一个别名会附加到Usage: index|<new alias>,而不是实际附加正确的命令。

我无法理解我做错了什么。有人可以帮忙吗?如何在使用-h--help选项时获得正确的输出?

index.js

#!/usr/bin/env node
'use strict';
var program = require('commander');
program
  .version('1.0.0')
  .command('random', 'random command')
  .alias('r')
  .parse(process.argv);

索引random.js

#!/usr/bin/env node
'use strict';
var program = require('commander');
program
  .option('-r, --random <random>', 'Random command option')
  .parse(process.argv);

的package.json

{
"name": "commander-test",
"version": "1.0.0",
"description": "Testing commander",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Raghuveer",
"license": "UNLICENSED",
"dependencies": {
  "commander": "^2.9.0",
  "graceful-readlink": "1.0.0"
 }
}

重现的步骤:

node index -h

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

将sub命令的别名添加到相应的子命令文件中。在您的情况下,您必须将其添加到 index-random.js 文件中。

#!/usr/bin/env node
'use strict';
var program = require('commander');
program
  .option('-r, --random <random>', 'Random command option')
  .alias('r')
  .parse(process.argv);

然后当你调用; node index.js help random 帮助将显示Usage: index-random|r

但是,我也面临的问题是,如果我只使用别名调用index命令,则不会发生任何事情。 (例如:如果我呼叫node index r,则不会返回任何输出。)

如果您成功调用别名而不是完整命令,请告诉我。

已更新:以下是两个命令的输出。

>node index.js help

  Usage: index [options] [command]

  Commands:

    random      random command
    help [cmd]  display help for [cmd]

  Options:

    -h, --help     output usage information
    -V, --version  output the version number


>node index.js help random

  Usage: index-random|r [options]

  Options:

    -h, --help             output usage information
    -r, --random <random>  Random command option