在完成了核心的步骤处理的函数之后我们需要对命令行参数进行处理,以判断是执行哪个命令可以使用process.argv来对命令行参数进行处理,也可以使用commander库来对命令进行解析使用commander库,可以方便我们对命令进行处理,可以采用链式的操作方式,
通过npm install commander --save来下载库
#!/usr/bin/env node
'use strict';
var program = require("commander"),
appInfo = require("../package.json"),
initcommand = require("../lib/command/init.commond");
program.version(appInfo.version)
.usage("project create!");
program.command("init")
.alias("i")
.description('新建一个angularjs项目')
.action(function(cmd, options){
initcommand();
});
program.parse(process.argv);
#!/usr/bin/env node
我们可以在linux下以node的形式运行程序,通过command函数来指定一个子集指令,action是输入该命令执行的相应函数,将上节实现的步骤函数抽象到一个文件中,然后对应不同的命令,就可以执行不同的步骤函数了,实现效果如下
commander库实现了对命令的处理其中最主要的是options和command这两个函数,
options是用来在一个命令中传递相应的参数过去,如
program.option('--type [type]', `应用类型, 可选`)
然后我们就可以在下面的程序中以program.type来获取在命令行中输入的参数
command这个函数就是用来创建子命令的
如上面所示的我们可以通过多次调用program.command来创建很多个不同的子命令,然后在不同的子命令中对于不同的操作