使用npm制作CMD命令(二)--命令参数的使用

2 篇文章 1 订阅
2 篇文章 1 订阅

CMD命令参数使用

使用npm制作CMD命令中已经介绍了基本的命令制作

现在我们可以学习一下, 怎么使用参数, 例如我们使用vue命令的时候, 可以使用vue init, 也可以使用vue ui等去做不同的事情, 后面的initui就属于这个命令的参数的

创建包

首先还是新建一个包, 又关创建以及包的文件和格式, 请参考使用npm制作CMD命令

目录

  • package.json
  • index.js

package.json

{
    "name": "command-test",
    "version": "1.0.0",

    ...

    "bin": {
        "mycommand": "./index.js"
    }
}

编写执行文件index.js

其实执行文件的是运行与NodeJs环境下的, 在NodeJs中有个全局变量process

是NodeJs中一个关于进程的对象, 这里不细说, 有兴趣的请参考NodeJs文档

process对象的argv属性中可以获取执行命令时的参数

index.js

#!/usr/bin/env node
console.log('argv: ', process.argv);

执行一个带参数的命令, 例如mycommand install, 你可以看到打印了一个数组

这个数组包含三个字符串, 前两个分别为node执行程序(node.exe)的路径和执行文件(index.js)的路径

第三个为install, 也就是我们命令的参数

当然也可以携带多个参数, process.argv数组除第一和第二个外, 其余项都是我们执行命令是所使用的的参数

使用参数

既然可以拿到参数, 那么久可以根据参数去做一些判断, 从而实现不同的功能

下面我们写个installuninstall参数的命令

index.js示例代码

#!/usr/bin/env node
const argv = process.argv.slice(2);

if (argv && argv.length > 0) {
    if (argv.indexOf('install') >= 0) {
        console.log('run install');
    }
    if (argv.indexOf('uninstall') >= 0) {
        console.log('run uninstall');
    }
}

然后我们再运行mycommand installmycommand uninstall, 可以看到分别打印了run installrun uninstall

或者运行mycommand install unstall, 那么run installrun uninstall都会打印

现在基本上可以使用这些东西去写一个CMD命令了

commander.js使用

commander.js就是用来处理命令参数的一个工具

示例代码

#!/usr/bin/env node
const program = require('commander');

program
    .option('install', 'install参数')
    .option('uninstall', 'uninstall参数')
    .parse(process.argv);

if(program.install) {
    console.log('run install');
}
if(program.uninstall) {
    console.log('run uninstall');
}

这段代码的效果与上面的代码效果是一样的, 使用了commander.js让你的代码看起来更加的优雅, 而且使用起来也很方便

commander.js 的 parse

parse方法接收一个用于解析的对象, 我们传入process.argv进行解析

commander.js 的 options方法

该方法接收两个参数, 第一个是命令的参数, 第二个是该参数的说明

例如上面的代码, 当我们使用了program.option('install', 'install参数')之后, 如果命令执行是有install参数, 那么commander就会在program对象中添加一个install属性(属性名与你的命令参数名一致), 值为true

命令的简写

options方法的第一个参数不仅接收一个参数的名称, 还可以定义一个参数的简写

简写与参数名称写在同一个字符串, 用逗号隔开, 简写在前, 名称在后

参数的简写

#!/usr/bin/env node
const program = require('commander');

program
    .option('i, install', 'install参数')
    .option('-u, uninstall', 'uninstall参数')
    .parse(process.argv);

if(program.install) {
    console.log('run install');
}
if(program.uninstall) {
    console.log('run uninstall');
}

这段代码与上面的代码有着同样的功能, 都可以处理mycommand installmycomamnd uninstall命令

但是这段代码还可以使用mycommand i代替mycommand install, 使用mycommand -u代替mycomamnd uninstall, 也就是简化了一下命令

关于commander可以自己阅读npm上的commander文档

好了, 到这里基本上就是学会了基础技能了, 发挥自己的创造力去做点牛逼的东西吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值