node.js命令行程序(使用commander节点模块)在执行时打开index.js
我正在使用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
。 如果将node index.js hello
更改为node index.js banana
则输出将为Input: banana
。
有关CLI参数的更多信息以及如何在这里访问它们: https : //nodejs.org/api/process.html#process_process_argv
cmdtools
命令不会输出任何内容,因为没有parameter passing给index.js
文件。
运行cmdtools
命令时,您将parameter passing给cmdtools
命令而不传递给index.js
。 没有输出,因为program.help()
不会输出任何东西到控制台。 您可以通过运行console.log('test')
而不是program.help()
来console.log('test')
。
在npm模块中的错误是
- 全局安装了软件包,但没有执行npm链接
- 所以,执行npm链接并尝试
cmdtools Hello
并得到了预期的输出