我正在使用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
如果您需要更多信息,请与我们联系。
答案 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