标签:const 代码 chalk 从零开始 脚手架 type 模板
我们在准备阶段就说过,最好准备一些模板代码.在脚手架生成的时候直接将其直接拿来用.
获取模板代码主要是两种方式:
1.内置在脚手架中,然后通过node file去操作,克隆文件.
好处有:(1)我们可以在脚手架中内置多个模板,比如对应ts的代码模板,对应js的代码模板,对应不同用户权限的代码模板.不需要创建多个仓库
(2)因为用一个项目代码去同时管理脚手架和模板,所以多方变更实际上只需要提交一次即可.
2.远端仓库
好处有:(1)因为模板是和脚手架分开的,所以他们的各种更新互不干扰.单独更新即可.而且方便分开维护
(2)选择性的拉取代码,而不是一次获得全部模板
暂时先用远端参数的方式来获取模板代码
首先:准备一个或者多个模板仓库,拿到其路径
然后:根据用户选择取拉取对应的仓库代码,因为是采取将路径用字符串写死在脚手架中的方式,所以我们需要用到准备阶段安装的child_process的exec去操作
const chalk =require('chalk') const inquirer = require('inquirer') const {exec } =require('child_process') const promptList = [ { type:'input', name:'projectName', message:'你的项目名称为', default:'sugar', validate:(value)=>{ if(value===''){ console.log(chalk.red.bold('无名氏')) return false }else{ return true } } }, { type:'input', name:'version', message:'你的项目版本号为', default:'1.1.0', when:(value)=>{ if(value.projectName!=='sugar'){ return true }else{ return false } } }, { type:'list', name:'type', message:'你想要创建哪种类型的项目', choices:[ 'ts', 'js', 'app' ], }, { type:'password', name:'keyword', message:'项目的认证关键词是', prefix:'重要>>>>>', suffix:':' }, ] module.exports = ()=>{ inquirer.prompt(promptList).then((answer)=>{ console.log(chalk.green('开始初始化')) const gitUrl = { ts:'https//github.com/tsxxxxxx', //ts模板对应的仓库路径 js:'https//github.com/jsxxxxxx' //js模板对应的仓库路径 } exec(`git clone ${gitUrl[answer.type]} ${answer.projectName}`,(err)=>{ if(err){ console.log(chalk.red('初始化出错啦')) process.exit()//退出当前操作 }else{ console.log(chalk.red('初始化完成')) process.exit()//退出当前操作 } }) }) }
然后执行初始化命令,会在执行初始化命令的地方执行克隆命令.正常操作的情况下会拉一份仓库代码下来.
标签:const,代码,chalk,从零开始,脚手架,type,模板 来源: https://www.cnblogs.com/Shyno/p/15223094.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。