范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

写一个自己的vuecli脚手架

  目前在市面上存在很多脚手架,如:create-react-app、vue-cli。我们可以通过一行简单的命令,就能创建一个基本的项目工程,大大地提高了开发效率。但是我们会面临一个问题,除了脚手架帮我们创建好的项目框架,我们的项目总有需要定制化的配置,比如我们需要引入我们想要的elementUI框架,引入axios相关的工具类完成http请求等。我们不可能每次开启新项目都再配置一遍吧,这太劳神费力了。
  通常我们会搞一个个性化脚手架cli,平时创建项目时通过该脚手架一键生成,并同时完成所有需要的配置,以快速开发。接下来,我们看看怎么搞?1.CLI 的运行原理创建动态链接库,暴露全局 cli 命令
  如果要暴露一个全局的命令,首先需要在 package.json 文件中编写一个 bin 命令,当前示例指向bin目录下的mycli.js文件。 "bin": "bin/mycli.js"读取并解析命令行参数
  读取命令行参数其实非常简单,使用 program.argv 获取 提供用户可选的配置项
  根据用户的选择,创建不同类型的项目模板,比如是否要typescript支持 拷贝自定义模板到本地
  一般我们会事先准备好一个项目模板,供cli下载 2.创建cli所需要的部分依赖模块commander实现控制台命令行问题交互inquirer 命令行中的 select 选择器chalk为控制台输出的文字着色download-git-repo拉去github项目代码ora实现控制台进度条样式figlet 生成好看的图标文字lolcatjs 生成随机颜色3.实现脚手架代码逻辑片段
  3.1 引入所需依赖#!/usr/bin/env node const path = require("path"); const program = require("commander");//cmd控制台交互 const ora = require("ora");//进度条 const chalk = require("chalk");//给提示文案着色 const download = require("download-git-repo");//拉取github项目 const fs = require("fs"); const minimist = require("minimist")//轻量级命令行参数解析引擎 const figlet = require("figlet");//酷炫的文字工具 const printer = require("@darkobits/lolcatjs");//生成颜色
  3.2创建cli版本和用法命令//展示mycli logo const logotext = figlet.textSync("my-cli"); const logotextColor = printer.fromString(logotext); //提取version const version=`${logotextColor} ${require("../package").version}`; program .version(version) .usage(" [options]")
  3.3 从项目模板地址,下载到本地
  我们这里使用了工具类download-git-repo的download方法,大家可以查下相关API// 成功和失败文案着色 const success = chalk.blueBright; const error = chalk.bold.red; //地址有多种写法,这个大家可以查看download-git-repo相关API const templateUrl = "github:napoleonjk/tmp-vue3-template#main" //下载到指定目录,名称基于用户输入的appName const dir = path.join(process.cwd(),appName); download(templateUrl, dir, { clone: true }, function (err) {       // 拉取项目代码       if (!err) {             //成功的逻辑             spinner.succeed(success("拉取成功"));             //更改 package.json 中的 name 和版本号,实现参照后文             changePackage(appName);             spinner.succeed(success("项目初始化成功"));             spinner.succeed(success(`cd ${appName}`));             spinner.succeed(success("npm install && npm run serve"));       } else {             //失败的逻辑             console.log(err);             spinner.fail(error("拉取失败"));       } });
  3.4项目下载完成后,依据用户输入,变更项目名和版本号// 替换模板package.json文件的name字段 const changePackage = (appName) => { fs.readFile(`${process.cwd()}/${appName}/package.json`, (err, data) => {               if (err) throw err;               let _data = JSON.parse(data.toString());               _data.name = appName;               _data.version = "1.0.0";               let str = JSON.stringify(_data, null, 4);               fs.writeFile(`${process.cwd()}/${appName}/package.json`, str, function (err) {                      if (err) throw err;                                             })       }); };4. 本地调试 npm 模块
  基于bin 命令的配置,将我们的包映射到全局,这样就可以通过运行模块名来运行我们的模块,这跟linux上建立一个软链接差不多,以方便我们在本地测试。cd mycli npm link5. 看一下各个命令效果mycli -h
  mycli -V
  cd workspace mycli init test-project //多试几次,有时候git clone失败
  想要获取脚手架mycli源码,私信我mycli即可。
  学无止境,创作不易,觉得不错的话,请记得为我关注、点赞、转发三连哦。

各位大神有没有r9000p性价比不错外接显示器推荐,预算2500以内?谢谢邀请。因为工作关系,昨天刚好看了下显示器。因答主现在用的显示器是27寸的,因此主要关注了一下这个尺寸的,以及相邻尺寸的。在推荐前先说一下当前主流的显示器屏幕的面板,主要有三种,规模下跌两千亿,越来越多的人弃用,余额宝到底发生了什么?很简单,就是收入率太低了哈哈!好好的搬你的砖吧,支付宝我身边的人几乎都在用。支付宝和微信是最好用的支付方式也是一种生活政策规定,不允许向新用户展示余额宝,出于安全考虑,有较多存款的为什么一些人选择隐行助听器?隐形助听器的好处有哪些?隐形的助听器是新兴的,使用起来更加方便啊,能够有效的帮助听力不好的患者提高听力,小巧更容易隐蔽,隐形的助听器是直接放在耳道部位,不容易脱落。普通的助听器看起来比较大,不管是佩戴还是噪音导致的耳聋,戴耳鸣助听器还有效吗?建议去专业的验配中心进行完整的听力检查后,验配师会根据听损的程度及性质让你试听机器,如果没有耳鸣的话,一般的助听器就可以决定问题。什么是噪声性耳聋?噪声性耳聋是由于长期遭受声音刺激助听器耳钩里有一个白色的东西是什么?对助听器有影响吗?您好!助听器耳钩里有一个白色的东西是干吗用的?怎么进去的?耳背式助听器耳钩内,一般都有一个白色的网状物体,这个叫阻尼子。阻尼子的作用是平滑掉10003000Hz这一中频范围内的波峰LaTeX入门相关LaTeX是一种基于的排版系统,我们在这里使用它对要在场景中展示的数学公式进行排版。LaTeX使用起来很容易,就是在你输入文本字符串的地方,将一些特殊的东西使用其规定的符号标注出来暴跌1。2万亿,热锅上的快手(图源网络)伯虎点睛短短半年,快手就摔了个大跟头。一周前,快手首批股票解禁,数量多达38。82亿股。这家上市首日市值超过1。2万亿港元,仅次于腾讯阿里美团拼多多的中国第五大互联网上钉子户死守4G,需要反思的是营运商文尚凡如今,对已经到来的5G时代,不但众多的手机用户选择敬而远之,就连起初使用的用户,也争相重回4G。近日,AI财经社撰文称5G已经铺开,但钉子户死守4G。剑指用户不领情,暗示营运RX6600XT新品发布宏碁掠夺者内存固态你不可错过的8月配置清单近期,AMD最新的甜品卡RX6600XT已经发布,通过网上爆料的跑分来看,RX6600XT相比RTX3060要略胜一筹,且超频能力也更为可观。而随着RX6600XT的上市,好的装机安卓表皇实至名归!多名博主上手OPPOWatch2续航表现太惊喜近几年来,随着各家手机厂商对智能生态的大力建设,智能穿戴设备市场的发展也越来越好,就连让用户感到鸡肋的智能手表也摆脱了大号手环的称号,开始取代传统手表的地位,走进大众的视野之中。不靠炸裂颜值和出众综合体验出圈,Reno6Pro被全网用户追着夸大家都知道,在迈进5G时代以后,国内的智能手机市场竞争也再次进入白热化阶段,毕竟大家都想要赢在起跑线上。作为国内一线品牌的绿厂,凭借OPPOReno6Pro的超高颜值以及出众的综合
腾讯回应派息式减持京东被投企业有持续自筹资金能力时退出品玩12月23日讯,腾讯称,投资发展期的成长型企业一直是腾讯投资的主要战略方向,而当被投企业有持续自筹资金能力时,则选择在适当情况下退出投资并与股东分享收益,腾讯的长期投资战略从未新华社将发NFT,可惜是腾讯至信链在元宇宙概念被玩滥的时候,没想到浓眉大眼的新华社也来凑热闹。12月22日,新华社微博宣布,将于12月24日2000通过区块链NFT技术,发行限量藏品。据介绍,该系列收藏品将精选的2刘强东取代腾讯成京东第一大股东,刘炽平卸任京东董事来源深圳商报读创12月23日,腾讯宣布,计划将所持有的约4。6亿股京东股份作为中期股息派发给腾讯股东。派发完成后,腾讯持有京东股份占比将从17降至2。3。腾讯控股称,鉴于本集团减少华中科技大学无人驾驶推土机系统入选2021湖北人工智能重大创新成果(场景)12月18日,在2021东湖国际人工智能高峰论坛上,湖北省科技厅发布了20项2021湖北人工智能重大创新成果(场景),它们代表了全省人工智能产业发展的最新成果和方向。华中科技大学土3万座油站入局换电,中石化要新能源车企交出半条命?原创首发金角财经(FJinjiao)作者小迪一台车省7万30秒换上满电电池补贴不受价格限制换电,新能源汽车补能的理想模式,在政策企业和巨头的助推下,正在加速从B端走向C端。最近,三华为Mate50Pro让苹果彻夜难眠,双副屏低轨卫星通讯华为手机中最令人期待的机型,应当是华为Mate50Pro,因为华为强大的工业设计能力,还有可靠的品控,所以外界对华为Mate50Pro十分期待。手机的外观设计展示,从一定程度上可以华为p50新一代的8848P50发布会后,大家都在吐槽价格虚高,在没有5g,搭载高通骁龙888的基础上,折叠屏的优势并不能弥补价位的缺点。问题是它为什么定价这么高?很简单,因为我们不是它针对的客户群体啊p5隐形智能手机霸主vivo重兵突进系统内核技术赛道Hyper与华为小米和苹果等众多智能手机终端厂商不同,vivo显得有些另类。这种不同,不仅体现在vivo相对更为低调如其在2021年的中国智能手机市场,出货量和市占率两次成为季度第一在技术投Redmi10泄漏规格和图像50MP相机249新元新加坡零售商Courts意外泄露了Redmi10智能手机。该网站目前在显示列表时遇到问题,但其他网站设法收集了所有信息,如规格和官方图片,新加坡售价是6128GB版249新元,约合摩托罗拉edgespro今日开售,售价2399起8月5日,摩托罗拉在其新机发布会上带来了摩托罗拉edgespro和edge轻奢版两款新机型。其中edgespro今日正式开售,售价2399起而edge轻奢版在今天上午10点开启预售云维保管理系统运维管理的宝器把脉行业发展机遇,立足战略高度顶层研究数智赋能是引擎,价值创造是根本云维保管理系统打通信息孤岛,标准化流程精细化管理数据化决策,实现人事物全方位多层次联接和协同。发现即追踪,全场景