我正在使用commander@2.9.0。附上下面的代码
package.json
{
"name": "commandtools",
"version": "1.0.0",
"description": "A command line example",
"main": "index.js",
"scripts": {
"test": "node index.js hello"
},
"author": "aaa <aaa@xxx.com>",
"license": "MIT",
"bin": {
"cmdtools":"./index.js"
},
"dependencies": {
"commander": "^2.9.0"
}
}
index.js
var program = require('commander');
program
.version('0.0.1')
.usage('<input>')
.parse(process.argv);
if(!program.args.length) {
program.help();
} else {
console.log('Input: ' + program.args);
}
在命令行中执行时,
cmdtools Hello
index.js 文件打开,命令行中没有任何输出
执行时,
npm test
输出为
Input: hello
我错过了什么?
最佳答案
您的代码输出在命令行中传递的参数。
npm test
输出 Input: hello
,因为 npm test
实际上运行 node index.js hello
。如果将 nodeindex.js hello
更改为 nodeindex.jsbanana
,输出将为 Input:banana
。
有关 CLI 参数以及如何访问它们的更多信息:https://nodejs.org/api/process.html#process_process_argv
cmdtools
命令不输出任何内容,因为没有参数传递到 index.js
文件。
运行 cmdtools
命令时,您将参数传递给 cmdtools
命令,而不是传递给 index.js
。没有输出任何内容,因为 program.help()
没有向控制台输出任何内容。您可以通过运行 console.log('test')
而不是 program.help()
来测试这一点。
关于javascript - Node.js 命令行程序(使用 Commander Node-Module)在执行时打开 index.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42367482/