方法一:通过原生NodeJsAPI,方法如下:#!/usr/bin/envnode#test.jsvarargv=process.argv;console.log(argv)通过以下命令执行:nodetest.jsparam1--param2-param3输出如下:['/usr/local/Cellar/node/10.10.0/bin/node','test.js','param1','--param2','-param3']可以看出argv中第一个参数是node应用的路径,第二个参数是执行的js程序文件,以及其余的是执行参数。方法二:通过yargs获取命令行参数。方法如下:首先需要在项目中引入模块:npminstall--saveargs然后创建一个JS可执行程序,如下:#!/usr/bin/envnodevarargs=require('yargs');constargv=参数。选项('n',{别名:'??name',需求:true,默认值:'tom',描述:'你的名字',类型:'string'})。usage('Usage:hello[options]').example('hello-nbob','sayhellotoBob').help('h').alias('h','help').argv;控制台.log('theargs:',argv)执行以下命令:nodetest.js-h显示结果如下:Usage:hello[options]Options:--versionDisplayversionnumber[Boolean]-n,--nameyourname[string][required][default:"tom"]-h,--help显示帮助信息[Boolean]示例:hello-nbobsayhellotoBob执行以下命令:nodetest.js-nBobbbb'wearefriends'结果显示如下:args:{_:['wearefriends'],n:'Bobbbb',name:'Bobbbb','$0':'test.js'}可见,通过yargs开源npm包,可以轻松定义命令行格式,方便获取各种形式的命令行参数。通过yargs虽然可以方便的定义和获取命令行参数,但是不能很好的解决与命令行的交互,而且参数的数据类型也比较有限。那么,让我们来看看另一个开源项目。方法三:通过查询者开源项目实现交互命令创建test.js文件:#!/usr/bin/envnodevarinquirer=require("inquirer");inquirer.prompt([{type:"input",name:"name",message:"controllernameplease",validate:function(value){if(/.+/.test(value)){returntrue;}return"nameisrequired";}},{type:"list",name:"type",message:"你想创建哪种类型的控制器?",choices:[{name:"NormalController",value:"",checked:true},{name:"RestfulController",value:"rest"},{name:"ViewController",value:"view"}]}]).then(answers=>{console.log(answers);});执行程序:nodetest.js输出结果:?控制器名称请测试?你想创建哪种类型的控制器?普通控制器{name:'test',type:''}参考:https://github.com/yargs/yargshttps://github.com/SBoudrias/...
