vue init定制团队模板之meta.js/meta.json写法入门
在上一篇文章中,我们提到了meta.js,这次我们详细了解一下meta.js里面各个模块的写法。
对于 meta.js/metajson 文件, 目前主要字段如下:
prompts<Object>: 收集用户自定义数据filters<Object>: 根据条件过滤文件completeMessage<String>: 模板渲染完成后给予的提示信息, 支持 handlebars 的 mustaches 表达式complete<Function>: 模板渲染完成后的回调函数, 优先于completeMessagehelpers<Object>: 自定义的 Handlebars 辅助函数
一、prompts
prompts是一个对象,对象里的每一个子对象是一个Inquirer.js,与用户进行交互,询问问题的。先看个例子:
{
prompts: {
name: {
type: "input",
message: "项目名"
},
author: {
type: "input",
message: "作者"
},
email: {
type: "input",
message: "邮箱",
validate: function(answer){
if(/@/g.test(answer)){
return true;
}
return "邮箱应该含有@符号";
}
},
vuex: {
type: "confirm",
message: "你的项目中需要安装vuex吗",
default: true
}
}
}
prompts各种参数配置方法
- type(类型):
input(输入,默认类型),confirm(y/n),list(列表),rawlist(带下标的列表),expand(下标是字母的列表),checkbox(复选框),password(密码),editor(编辑大篇文字)。 - massage(提示信息——问题):字符串或者函数,如果是函数,返回值需要时字符串;默认是name值,如上面的name,author,email,vuex。
- default(默认值):这个需要跟据类型和选项来给出对应的默认值,这个就不多说了,大家都明白。
- choices(选项):list,rawlist,expand,checkbox类型需要给出相应的choice供用户选择,数组类型,数组的每个元素可以是字符串也可以是对象。对象可以有name(选之前的提示信息)、value(选的结果)、short(选之后显示的结果)。
- validate(有效性验证):函数类型,参数是用户输入的结果,验证通过返回true,否则返回一个验证失败的提示。
- filter(过滤):函数类型,参数是用户输入的结果,filter的处理结果会改变用户输入的结果,这个与后天提到的transformer不同。
- transformer(转换):函数类型,参数是用户的输入结果,transformer的处理结果是用来展示出来的,不会改变用户输入的最终结果,仅仅是显示的不同。
- when(控制条件):函数类型,参数是用户的输入结果,当前面的某个结果符合条件时才会询问此问题。
- pageSize(每页显示的数量):当有choice选项的时候可以给用这个来控制每页显示的数量。
当所有问题问完之后,template 目录下的所有文件将会用 Handlebars 进行渲染. 用户输入的数据会作为模板渲染时的使用数据。
二、filters
filters 字段是一个包含文件过滤规则的对象, 键用于定义符合 minimatch glob pattern 规则的过滤器, 键值是 prompts 中用户的输入值或者表达式,代码如下:
filters: {
"store/*": "vuex"
}
在上面的询问中,如果你vuex选项选择了no,你的store文件夹以及其下面的子文件将被删除,蜀国选的yes,store文件夹以及其下面的子文件将被保留。
三、helpers
在hleplers中,你可以注册handlebars函数,注册后,在template里面的文件中可以使用你注册的辅助函数。vue自带的有if_eq(判断两个参数相等的)和unless_eq这连个辅助函数。
helpers: {
between(v, v1, v2, options) {
if (v > v1 && v < v2) {
return options.fn(this)
}
return options.inverse(this)
}
}
四、complete或completeMessage
complete为一个函数,completeMessage为一个字符串。
如果同时写了这两个,会调用complete函数,即complete的优先级高。
"completeMessage": "请按以下步骤启动,耐心等待:\n\n {{^inPlace}}cd {{destDirName}}\n {{/inPlace}}npm i\n npm run dev 或者 npm start"
在completeMessage中支持插值表达式的写法。
vue init定制团队模板之meta.js/meta.json写法入门的更多相关文章
- vue init定制团队模板使用方法
每次做项目都要自己搭建项目目录,或者换了公司就的重新搭建项目目录,是不是很麻烦呢?有没有想过一次性把项目目录搭建好,以后直接用呢?你首先想到的可能是复制自己原来的项目,然后删除.修改等等.然而有个更方 ...
- vue init深度定制团队自己的Vue template
大家都知道,使用vue-cli可以快速的初始化一个基于Vue.js的项目,全局安装脚手架之后,你可以通过vue list命令看到官方提供的5个模板 vue list 当开发一个独立项目的时候,使用官方 ...
- 定制团队自己的 Vue template
一,我们使用vue-cli 可以快速初始化vue.js的项目,官方提供了webpack,pwa,browserify-sipmple,等常用template 二.置知识1,模板结构template:该 ...
- 解决vue-cli不能初始化webpack模板的问题(vue init卡住了,解决办法)
报这个错误 有人说是代理问题.我也不懂,但这个方法有用 1.去github上下载要初始化的模板 https://github.com/vuejs-templates/webpack 或者直接用git去 ...
- 如何快速的vue init 属于自己的vue模板?
相信很多接触过vue的小伙伴非常熟悉了,我们在开启项目之前都需要vue init webpack xx来初始化自己的项目目录.但是在实际开发中我们往往会根据公司要求或者业务的需要会对目录进行局部的调整 ...
- 用vue官方提供的模板vue-cli搭建一个helloWorld案例
安装环境 安装node.js并配置环境变量 安装淘宝镜像,npm install -g cnpm --registry=https://registry.npm.taobao.org 安装webpac ...
- (尚018-第二章2.1)Vue使用vue-cli创建模板项目
2.1.1 1)vue-cli是官方提供的脚手架工具(注意:脚手架本身是个库) 2)github:https://github.com/vuejs/vue-cli 3)作用:从https://gith ...
- vue init失败解决方案-终极版
//由于windows系统的某方面问题,vue脚手架安装可能会出现第一证书丢失 // 报错:vue-cli · Failed to download repo vuejs-templates/webp ...
- vue脚手架搭建移动端项目--flexible.js
通过命令行 node -v 查看是否安装node环境 在 nodejs 和 webpack已安装的前提下,随便一个文件夹下,输入命令行 npm install vue-cli -g 安装完成后,通过 ...
随机推荐
- grpc入门2
rpc-gateway使用(同时提供rpc和http接口) 介绍第三方库 https://github.com/grpc-ecosystem/grpc-gateway 在grpc之上加一层代理并转发, ...
- java使用正则表达式,去除windows系统中文件名的非法路径
w哦我爬取一个页面,并且把附件下载下来,保存,有的时候文件名,带*号,所以,无法保存 这时候就要删除所有的非法字符 String fileName = resourceName + fileTypt; ...
- [jnhs]使用netbeans生成的webapp发布到tomcat是需要改名字的,不然就是404Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
2018-12-21更新 退出tomcat然后删除解压之后的文件夹,然后再启动tomcat也可以解决(安装版tomcat) 2018-12-9更新 有时候这样也可以解决 第一次使用tomcat发布we ...
- Spring Boot Redis 集成配置(转)
Spring Boot Redis 集成配置 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px #ede ...
- 2019.8.7 NOIP模拟测试14 反思总结
先扔代码 调完自闭网络流了,新一轮考试前看看能不能赶完…… 考得极其爆炸,心态也极其爆炸,真的是认识到自己能力上的不足 思维跑偏,代码能力差 就这样吧,再努力努力,不行就AFO T1旋转子段: 因为我 ...
- Linux远程管理Windows程序Rdesktop详解
#rpm –q rdesktop //查找是否已经安装 #yum install rdesktop //使用yum安装 rde ...
- Leetcode71. Simplify Path简化路径
给定一个文档 (Unix-style) 的完全路径,请进行路径简化. 例如, path = "/home/", => "/home" path = &qu ...
- JavaScript的注意事项
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- javascript中uber实现子类访问父类成员
function Animal(){} Animal.prototype={ name:"animal", toString:function(){ console.log(thi ...
- Location 位置 history
拆分出来地址 让地址各归其位 search案例 查找历史记录跳转