javascript - Node.js 命令行程序(使用 Commander Node-Module)在执行时打开 index.js

标签 javascript node.js command-line npm jcommander

我正在使用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/

相关文章:

javascript - 正则表达式 : Split line by ","

xml - Node SOAP : How to create a complex message with specific attributes?

ffmpeg - GStreamer 中的 fdsink 元素不能用于将正确的字节流输出到管道

javascript - 下拉类在 JSF 中不起作用

javascript - 使用 JavaScript 重定向

javascript - 如何确定 JavaScript 函数是原生的(无需测试 '[native code]' )

javascript - 将赋值变量解构为全局常量

javascript - 在释放 zalgo 的 Node.js 设计模式中,为什么异步路径是一致的?

pdf - 如何在不损失质量的情况下从(Linux)命令行注释 PS 或 PDF?

linux - 如何在 Linux 中基于父文件夹移动和重命名文件?