获取到当前命令行信息

process.argv
1.process.argv[0] node的安装路径
2.process.argv[1] 当前文件的路径
3.process.argv[2] 命令行参数 第三个开始后的所有

获取到当前命令的第一个命令符

process.argv[2]

返回 Node.js 进程的当前工作目录

process.cwd()

获取到当前执行文件的绝对路径

__dirname

commander

  • 完整的 node.js 命令行解决方案

    • 简化使用:const { program } = require(‘commander’);

    • 程序较为复杂:const { Command } = require(‘commander’); const program = new Command();

    • version:版本号

#默认将-V和—version选项添加到命令中
#如果希望程序响应-v选项而不是-V选项,
#只需使用与option方法相同的语法将自定义标志传递给version方法
.version(‘0.0.1’, ‘-v, —version’)

  • command(name,description) : 定义选项;name作为参数传入action函数中;添加命令名称

参数:command函数接收三个参数:

  1. - 命令名称必须:命令后面可跟用<>或[]包含的参数;命令的最后一个参数可以是可变的,像实例中那样在数组后面加入...标志;在命令后面传入的参数会被传入到action的回调函数以及program.args数组中。
  2. - 命令描述可省略:如果存在,且没有显示调用action(fn),就会启动子命令程序,否则会报错
  3. - 配置选项可省略:可配置noHelpisDefault

:使执行命令时,将验证该命令的options,任何未知的option都将报错。但是,如果基于action的命令如果没有定义action,则不验证options。

  • action(fn) : 匹配相应选项执行函数,接受选项名name和参数列表args;表示必须有该选项,[name…]表示可选选项。

    • .action((name(必选),可选)=>{})
  • option:Commander 使用.option() 方法来定义选项

    • 每个选项可以定义一个短选项名称(-后面接单个字符)和一个长选项名称(—后面接一个或多个单词),使用逗号、空格或|分隔。
    • 选项可以通过 Commander 对象的同名属性获取,对于多个单词的长选项,使用驼峰法获取
    • 多个短选项可以合并简写,其中最后一个选项可以附加参数。 例如,-a -b -p 80 也可以写为 -ab -p80 ,甚至进一步简化为 -abp80。
    • —可以标记选项的结束,后续的参数均不会被命令解释,可以正常使用。 如果后续命令也需要设置选项,则可以通过该方式实现,例如:do — git —version。
    • 选项在命令行中的顺序不固定,一个选项可以在其他选项之前或之后指定。

      选项的默认值:

    • .option(‘-c, —cheese’, ‘add the specified type of cheese’, ‘blue’); 第三个参数为默认值

      可选参数:

    • 选项的参数使用方括号声明表示参数是可选参数,即传值不是必须的。

      必填选项:

    • 通过.requiredOption方法可以设置选项为必填。必填选项要么设有默认值,要么必须在命令行中输入,对应的属性字段在解析时必定会有赋值。该方法其余参数与.option一致。

  • parse:接收process.argv为参数,将命令行信息传入该方法

  • alias(name) : 定义别名;用于选项;参数定义无效;

  • allowUnknownOption() : 允许未定义的参数,执行中不报错;
  • otps(): 返回options的键值对表示的对象

    inquirer

  • 一组通用的交互式命令行用户界面。

    • inquirer.prompt(questions) -> answers => {}

    • 启动提示界面(查询会话)

      • questions (数组)包含 Question Object(使用reactive interface,您还可以传递一个 Rx.Observable实例) 返回Promise

        questions参数:

      • type: (String) 提示符类型. 默认input - 可能的值 input, number, confirm, list, rawlist, expand, checkbox, password, editor 。表示提问的类型。存储当前问题回答的变量。

      • name: (String) 在answers hash中存储答案时要使用的名称。 如果名称包含句点,它将在answers散列中定义一个路径。
      • message: (String|Function)打印的问题。 如果定义为函数,第一个参数将是当前查询者会话的回答。默认值为 name(后跟冒号)。
      • default: (String|Number|Boolean|Array|Function)不输入任何内容时使用的默认值,或返回默认值的函数。 如果定义为函数,第一个参数将是当前查询者会话的回答。
      • choices: (Array|Function) 选择数组或函数返回的选择数组。 如果定义为函数,第一个参数将是当前查询者会话的回答。数组值可以是简单的numbers、strings或包含name的objects(在列表中显示)、value (保存在answers hash中)和short属性(在选择后显示)的对象。选择数组还可以包含一个分隔符。
      • validate: (Function) 接收用户输入并answers hash。 对用户的回答进行校验。
      • filter: (Function) 接收用户输入并answers hash。 对用户的回答进行过滤处理,返回处理后的值。返回的值将被添加到answers hash中。
      • transformer: (Function) 接收用户输入,对用户回答的显示效果进行处理(如:修改回答的字体或背景颜色),但不会影响最终的答案的内容。
      • when: (Function, Boolean) 接收当前用户的answers hash,根据前面问题的回答,判断当前问题是否需要被回答。
      • pageSize: (Number) 修改某些type类型下的渲染行数。
      • prefix: (String) 修改message默认前缀。
      • suffix: (String) 修改message默认后缀。
      • askAnswered: (Boolean) 如果答案已经存在,强制提示问题。
      • loop: (Boolean) 启用列表循环。默认值:真

        answers参数 :

      • Key问题对象的name属性

      • Value (取决于提示)
        • confirm: (Boolean)
        • input: 用户输入(如果定义了过滤器,则进行筛选) (String)
        • number: 用户输入(如果定义了过滤器,则进行筛选) (Number)
        • rawlist,list: 选择的选择值(如果没有指定值,则为name)(String)