自定义vue-cli 实现预设模板项目

模板结构

主要包括四个部分:

  • preset.json
  • prompts.js
  • generator/index.js
  • template/

项目最终结构

在这里插入图片描述

preset.json

preset.json 中是一个包含创建新项目所需预定义选项和插件的 JSON 对象,让用户无需在命令提示中选择它们,简称预设;

prompts.js

交互式的告知vue create所需,是根据用户使用需求自定义设置的信息。

定义格式参考Inquirer 问题格式的数组(Inquirer官方文档)

generator.js

generator.js 导出一个函数,这个函数接收三个参数

  1. 一个 GeneratorAPI 实例

提供一系列的API控制最终输出的目录结构及内容
自定义模版必然用到 GeneratorAPI 的 render() 方法

  1. 用户自定义的设置选项

即:用户对 prompts.js 中问题所提供的答案

  1. 整个 preset 预设信息

获取preset.json模板

先用 vue create 去创建一个项目,然后把你的预设信息保存下来,到指定目录下查找预设信息:

# Unix
~/.vuerc
# windows
C://用户/<username>/.vuerc
{"useTaobaoRegistry": false,"presets": {"test": {"useConfigFiles": false,"plugins": {"@vue/cli-plugin-babel": {},"@vue/cli-plugin-typescript": {"classComponent": true,"useTsWithBabel": true},"@vue/cli-plugin-pwa": {},"@vue/cli-plugin-router": {"historyMode": true},"@vue/cli-plugin-vuex": {},"@vue/cli-plugin-eslint": {"config": "prettier","lintOn": ["save"]},"@vue/cli-plugin-unit-mocha": {},"@vue/cli-plugin-e2e-cypress": {}},"vueVersion": "3","cssPreprocessor": "dart-sass"},"hpi-base-mp": {"useConfigFiles": false,"plugins": {"@vue/cli-plugin-babel": {},"@vue/cli-plugin-typescript": {"classComponent": true,"useTsWithBabel": true},"@vue/cli-plugin-pwa": {},"@vue/cli-plugin-router": {"historyMode": true},"@vue/cli-plugin-vuex": {},"@vue/cli-plugin-eslint": {"config": "prettier","lintOn": ["save"]},"@vue/cli-plugin-unit-jest": {},"@vue/cli-plugin-e2e-cypress": {}},"vueVersion": "3","cssPreprocessor": "dart-sass"}},"latestVersion": "5.0.8","lastChecked": 1678342987436
}

其中,presets 保存的就是预设信息,test 是保存预设起的别名,我们的preset.json 需要的就是 test 的值,所以preset.json 中的内容就是这样

{"useConfigFiles": false,"plugins": {"@vue/cli-plugin-babel": {},"@vue/cli-plugin-typescript": {"classComponent": true,"useTsWithBabel": true},"@vue/cli-plugin-pwa": {},"@vue/cli-plugin-router": {"historyMode": true},"@vue/cli-plugin-vuex": {},"@vue/cli-plugin-eslint": {"config": "prettier","lintOn": ["save"]},"@vue/cli-plugin-unit-jest": {},"@vue/cli-plugin-e2e-cypress": {}},"vueVersion": "3","cssPreprocessor": "dart-sass"
}

创建问答prompts.js

module.exports = []

prompts.js 我们可以不提供问题,导出一个空数组就行;

创建项目模板生成器generator

 // generator/index.js
module.exports = (api, options, rootOptions) => {api.extendPackage({//扩展pkg#scriptsscripts: {"serve": "vue-cli-service serve","build": "vue-cli-service build","lint": "vue-cli-service lint"}, // 扩展pkg#dependenciesdependencies: {"vue": "^2.6.11"}, //扩展pkg#devDependenciesdevDependencies: {"@babel/core": "^7.11.4","@babel/preset-env": "^7.11.0","@vue/cli-service": "~4.5.0","sass": "^1.26.10","sass-loader": "^8.0.2"}});// 复制template模版api.render('../template');
};

创建模板

最后只需将项目模版复制到 template 中,然后删除 package.json 文件。
对于以 . 开头的文件,改成 _ ,例如 .eslintrc.js ==》_eslintrc.js。

因为以. 开头的文件,在Git上传、拉取时会被忽略。

使用预设模板创建项目

//本地
vue create --preset ./hip-base-mp hip-xxx-mp
// GitHub 
$ vue create --preset <username>/<hip-base-mp> <hip-xxx-mp> 
// GitLab 私有服务器 
vue create --preset direct:<私服项目地址>.git --clone <hip-xxx-mp>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/619735.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C 数据结构】栈

文章目录 【 1. 基本原理 】栈的分类 【 2. 动态链表栈 】2.1 双结构体实现2.1.0 栈的节点设计2.1.1 入栈2.1.2 出栈2.1.3 遍历2.1.4 实例 2.2 单结构体实现2.2.0 栈的节点设计2.2.1 入栈2.2.2 出栈2.2.3 实例 【 3. 顺序栈 】3.1 入栈3.2 出栈3.3 实例 【 1. 基本原理 】 栈&…

手机数据恢复工具

下载地址&#xff1a;手机数据恢复工具.zip Android/HarmonyOS 文件误删是日常使用电子设备时经常遇到的问题&#xff0c;也许一不小心就就可能会误删。 俗话说&#xff1a;数据无价&#xff0c;一但想要找回一些被删除的文件&#xff0c;就需要耗费大量的精力和财力来恢复文…

three.js捋文档的记录笔记(六):场景 几何体 材质 物体 相机 渲染器的简单理解

三维场景Scene const scene new THREE.Scene();物体形状&#xff1a;几何体 Geometry //创建一个长方体几何对象Geometry const geometry new THREE.BoxGeometry(100, 100, 100); 物体外观&#xff1a;材质Material //创建一个材质对象Material const material new THREE.M…

锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测。 参考资料 [1] h…

自编译支持CUDA硬解的OPENCV和FFMPEG

1 整体思路 查阅opencv的官方文档&#xff0c;可看到有个cudacodec扩展&#xff0c;用他可方便的进行编解码。唯一麻烦的是需要自行编译opencv。 同时&#xff0c;为了考虑后续方便&#xff0c;顺手编译了FFMPEG&#xff0c;并将其与OPENCV绑定。 在之前的博文“鲲鹏主机昇腾A…

家庭网络防御系统搭建-将NDR系统的zeek日志集成到security onion

在前面的文章中安装了zeek,这里&#xff0c;安装了securityonion&#xff0c;这里&#xff0c;本文讲述如何将zeek生成的日志发送到siem security onion之中。 所有日志集成的步骤分为如下几步&#xff1a; 日志收集配置日志发送接收日志解析配置日志展示配置 ZEEK日志收集配…

BackTrader 中文文档(十二)

原文&#xff1a;www.backtrader.com/ Visual Chart 原文&#xff1a;www.backtrader.com/docu/live/vc/vc/ 与 Visual Chart 的集成支持两者&#xff1a; 实时数据提供 实时交易 Visual Chart是完整的交易解决方案&#xff1a; 在单个平台上集成图表、数据源和经纪功能 更多…

第⑭讲:Ceph集群管理:守护进程管理、日志管理和端口号配置

文章目录 1.Ceph各组件守护进程的管理方式2.守护进程管理操作2.1.Ceph所有组件的守护进程列表2.2.重启当前主机中所有的Ceph组件2.3.重启主机中所有的Monitor组件2.4.重启指定主机的Monitor组件2.5.重启指定的OSD组件 3.Ceph的日志管理4.Ceph集群各组件的守护进程5.Ceph集群各组…

通讯录(单链表思想)

文章目录 通讯录 2.0头文件通讯录操作函数通讯录主函数 通讯录 2.0 之前分享过使用顺序表思想实现通讯录&#xff0c;现在分享使用单链表实现的通讯录&#xff0c;我们只需要规定每个链表的元素是结构体类型&#xff0c;每个结构体内存放联系人信息即可。 **不断地练习才能熟练…

医用分子筛制氧机设计规范详细介绍

随着技术的不断进步&#xff0c;医用分子筛制氧机作为现代领域的重要设备&#xff0c;其设计规范显得尤为重要。本文将详细阐述医用分子筛制氧机的设计规范&#xff0c;确保设备的性能稳定、安全可靠。 一、设计原则 医用分子筛制氧机的设计应遵循安全、高效、稳定、易维护的原…

MySQL的权限管理

MySQL的权限管理 在理解MySQL的权限管理之前&#xff0c;我们需要先了解其架构设计以及权限管理在该架构中的定位。 MySQL的架构设计 MySQL数据库系统采用了分层的架构设计&#xff0c;主要可以分为以下几个层级&#xff1a; 连接层&#xff1a;最外层&#xff0c;处理连接…

设计一个通知系统

设计的系统支持不同类型消息的发送&#xff0c;例如push消息&#xff0c;sms消息和邮箱消息&#xff0c;能够支持千万级别的发送&#xff0c;保证消息推送的幂等性。系统结构图如下&#xff1a; 系统架构图中各组件作用说明&#xff1a; device/setting/user info&#xff1a;…