获取到当前命令行信息
process.argv
1.process.argv[0] node的安装路径
2.process.argv[1] 当前文件的路径
3.process.argv[2] 命令行参数 第三个开始后的所有
获取到当前命令的第一个命令符
返回 Node.js 进程的当前工作目录
获取到当前执行文件的绝对路径
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函数接收三个参数:
- 命令名称必须:命令后面可跟用<>或[]包含的参数;命令的最后一个参数可以是可变的,像实例中那样在数组后面加入...标志;在命令后面传入的参数会被传入到action的回调函数以及program.args数组中。
- 命令描述可省略:如果存在,且没有显示调用action(fn),就会启动子命令程序,否则会报错
- 配置选项可省略:可配置noHelp、isDefault等
注:使执行命令时,将验证该命令的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) 如果答案已经存在,强制提示问题。
-
answers参数 :
Key问题对象的name属性
- Value (取决于提示)
- confirm: (Boolean)
- input: 用户输入(如果定义了过滤器,则进行筛选) (String)
- number: 用户输入(如果定义了过滤器,则进行筛选) (Number)
- rawlist,list: 选择的选择值(如果没有指定值,则为name)(String)