当前位置: 首页 > 后端技术 > Node.js

脚手架常用工具:commander等工具的使用

时间:2023-04-03 10:16:34 Node.js

这是系列文章的第一篇《从0到1打造一款脚手架》脚手架开发过程中会用到一些工具,比如交互提示,获取用户输入,高亮显示,生成模板等,这里简单介绍一下,方便后续开发。commandercommander是一个命令行解决方案。通过它,您可以告诉用户脚手架的命令和功能,并处理用户输入。安装:npminstallcommander使用:简单使用:const{program}=require('commander');program.parse();//解析并执行命令:nodemain.js--helpaddname,description,versionnumber,Usagetips.const{program}=require('commander');//名称、描述、版本号、使用技巧。program.name('cli').description('这是一个神奇的脚手架').version('0.0.1').usage('[options]');program.parse();执行命令:nodemain.js--help,morecontent:addcreatePagecommandconst{program}=require('commander');//名称,描述,版本号,使用技巧。program.name('cli').description('这是一个神奇的脚手架').version('0.0.1').usage('[options]');//创建页面命令program.command('createPage').description('生成页面')//命令description.argument('','filename')//表名是必需的。action((name)=>{//输入命令的动作,逻辑实现。console.log(`创建了一个新文件:${name}`);});program.parse();执行命令:nodemain.jscreatePageindex.vuechalkchalk是一个终端字符串美化工具。安装:npminstallchalk@4.1.2最新版的chalk是用ES6Module写的,不支持require。如果遇到错误Error[ERR_REQUIRE_ESM]:require()ofESModule/node_modules/chalk/source/index.jsfrom/Desktop/test/main.jsnotsupported。安装旧版本可以避免这个问题。使用:chalk.blue表格字体蓝色,chalk.red表格字体红色,chalk.underline表格下划线,chalk.bgRed表格背景红色constchalk=require('chalk');console.log(`${chalk.blue('你好')},${chalk.red('this')}${chalk.underline('is')}${chalk.bgRed('chalk')}!`);美化效果:询问者交互式命令行界面。提供向运营商提问、获取并解析用户输入、提供多级提示、提供错误回调、检测用户回答是否合法的能力。安装:npminstallinquirer@8.2.5inquirer最新版本是ES6Module,不支持使用require,遇到错误Error[ERR_REQUIRE_ESM]:require()ofESModule/node_modules/chalk/source/index.jsfrom/不支持桌面/测试/main.js。安装旧版本可以避免这个问题。使用:constinquirer=require('inquirer')constarr=[{type:'input',name:'projectName',message:'projectname',default:'vue-demo',},{type:'list',name:'projectType',message:'projecttype',default:'vue2',choices:[{name:'vue2',value:'vue2'},{name:'vue3',value:'vue3'},{name:'react',value:'react'}]},{type:'checkbox',name:'plugins',message:'pluginselection',选择:[{name:'babel',value:'babel'},{name:'eslint',value:'eslint'},{name:'vue-router',value:'vue-router'}]},{type:'confirm',name:'confirm'',message:'confirm',}];inquirer.prompt(arr).then(answers=>{console.log('==============');console.log(answers);}).catch(error=>{console.log('------------')console.log(error)})type表示类型,input表示输入box,list表示单个选项,checkbox表示多个选项,confirm表示确认项。name代表键名,default表默认值,message是名字。ejs高效的嵌入式JavaScript模板引擎。模板可以从数据中动态呈现。安装:npminstallejs根据用户状态渲染不同视图:constejs=require('ejs')conststr=`

<%if(user){%><%=user.name%><%}else{%>Login<%}%>
`;//编译模板lettemplate=ejs.compile(str,{});//Render模板,根据用户状态呈现不同的视图。常量数据={用户:空};//{user:{name:'zhangsan'}}console.log(template(data))数据为{user:null},渲染结果:数据为{user:{name:'zhangsan'}},渲染结果: