美文网首页
Node 装X实战 创建自己的CLI(二)

Node 装X实战 创建自己的CLI(二)

作者: 圆脸黑猫警长 | 来源:发表于2020-10-27 11:53 被阅读0次

    根据基础篇中的内容,我们已经可以创建一个简单的CLI 项目了,也配置了基本指令解析,但是还远远不够,在使用别人的CLI工具时,往往在指令后面还可以加上参数,比如--help--version等常见指令。那么这些是如何解析的?

    一、传参的本质

    其本质是给node执行环境传参,取参的过程。
    在使用node命令执行文件时,如果需要参数我们直接写在文件名称的后面,比如node index.js param1 param2=aa,这个就表示执行index.js文件的时候同时传入了param1param2=aa 两个参数,而取参数则在index.js中使用process.argv去获取参数。

    输出process.argv的内容如下,可见传入参数都可以在这里获取到

    argv: [
      '/usr/local/bin/node',
      '/Users/Hansen/Desktop/Projects/Demo/index.js',
      'param1',
      'param2=aa'
    ],
    

    这里的前两个参数是默认的,真正的参数从第三个开始。
    注意这里的第一个参数,是node的执行环境,也就是第一篇文章中#!后面写的环境。

    二、传参的解析

    实际开发CLI时,由于往往指令后的一些参数比较统一,比如都有--help--version等,所以我们并不直接写参数解析,业内常用TJ大佬的库:Commander GitHub

    2.1 安装

    npm install commander

    2.2 基础使用

    index.js文件中代码如下

    #!/usr/bin/env node
    const { program } = require('commander');
    program.version('0.0.1');
    
    // 在最后写解析argv 
    program.parse(process.argv)
    
    2.3 进阶使用

    2.3.1> 参数缩写对于直接支持的参数设置的时候可以同时指定参数名称

    program.version('0.0.1' , '-a, --b, -C');
    
    // 实际上应当读取package.json的中的版本号作为这里的值
    program.version(require('./package.json').version);
    

    设置version参数时,第二个参数添加 -a --b -C作为命令的参数,这里作用为都是原来--version的结果。但是这里如果设置了,则原来默认的会失效,这个方法默认是以-V, --version作为参数(文档描述:This method auto-registers the "-V, --version" flag)。所以对于常用命令不建议重新设置其参数。

    相关文章

      网友评论

          本文标题:Node 装X实战 创建自己的CLI(二)

          本文链接:https://www.haomeiwen.com/subject/wcotvktx.html