在上一篇文章中,我们提到了meta.js,这次我们详细了解一下meta.js里面各个模块的写法。

对于 meta.js/metajson 文件, 目前主要字段如下:

  • prompts<Object>: 收集用户自定义数据
  • filters<Object>: 根据条件过滤文件
  • completeMessage<String>: 模板渲染完成后给予的提示信息, 支持 handlebars 的 mustaches 表达式
  • complete<Function>: 模板渲染完成后的回调函数, 优先于 completeMessage
  • helpers<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写法入门的更多相关文章

  1. vue init定制团队模板使用方法

    每次做项目都要自己搭建项目目录,或者换了公司就的重新搭建项目目录,是不是很麻烦呢?有没有想过一次性把项目目录搭建好,以后直接用呢?你首先想到的可能是复制自己原来的项目,然后删除.修改等等.然而有个更方 ...

  2. vue init深度定制团队自己的Vue template

    大家都知道,使用vue-cli可以快速的初始化一个基于Vue.js的项目,全局安装脚手架之后,你可以通过vue list命令看到官方提供的5个模板 vue list 当开发一个独立项目的时候,使用官方 ...

  3. 定制团队自己的 Vue template

    一,我们使用vue-cli 可以快速初始化vue.js的项目,官方提供了webpack,pwa,browserify-sipmple,等常用template 二.置知识1,模板结构template:该 ...

  4. 解决vue-cli不能初始化webpack模板的问题(vue init卡住了,解决办法)

    报这个错误 有人说是代理问题.我也不懂,但这个方法有用 1.去github上下载要初始化的模板 https://github.com/vuejs-templates/webpack 或者直接用git去 ...

  5. 如何快速的vue init 属于自己的vue模板?

    相信很多接触过vue的小伙伴非常熟悉了,我们在开启项目之前都需要vue init webpack xx来初始化自己的项目目录.但是在实际开发中我们往往会根据公司要求或者业务的需要会对目录进行局部的调整 ...

  6. 用vue官方提供的模板vue-cli搭建一个helloWorld案例

    安装环境 安装node.js并配置环境变量 安装淘宝镜像,npm install -g cnpm --registry=https://registry.npm.taobao.org 安装webpac ...

  7. (尚018-第二章2.1)Vue使用vue-cli创建模板项目

    2.1.1 1)vue-cli是官方提供的脚手架工具(注意:脚手架本身是个库) 2)github:https://github.com/vuejs/vue-cli 3)作用:从https://gith ...

  8. vue init失败解决方案-终极版

    //由于windows系统的某方面问题,vue脚手架安装可能会出现第一证书丢失 // 报错:vue-cli · Failed to download repo vuejs-templates/webp ...

  9. vue脚手架搭建移动端项目--flexible.js

    通过命令行 node -v 查看是否安装node环境 在 nodejs 和 webpack已安装的前提下,随便一个文件夹下,输入命令行 npm install vue-cli -g 安装完成后,通过 ...

随机推荐

  1. 元素 XXXX 的前缀 "mvc" 未绑定

    这个问题是由于spring-servlet配置不全 在上边部分添加一句 xmlns:mvc="http://www.springframework.org/schema/mvc" ...

  2. mysql8.0 安装版没有my.ini

    这时候,打开 benchmark,看一下实际路径就好了

  3. linux升级或安装程序后无法进入图形界面

    报错如下: Failed to start the X server (your graphical interface). lt is likely that it is not set up co ...

  4. Leetcode590N-ary Tree Postorder TraversalN叉树的后序遍历

    给定一个 N 叉树,返回其节点值的后序遍历. class Node { public: int val; vector<Node*> children; Node() {} Node(in ...

  5. ML面试1000题系列(21-30)

    本文总结ML面试常见的问题集 转载来源:https://blog.csdn.net/v_july_v/article/details/78121924 21.请简要说说EM算法. @tornadome ...

  6. GitHub上的SliddingMenu滑动过程中卡顿问题的解决的方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wenyiqingnianiii/article/details/25123995 找了非常久,仅仅需 ...

  7. 介绍vue项目中的axios请求(get和post)

    一.先安装axios依赖,还有qs依赖 npm install axios --save npm install qs --save qs依赖包用post请求需要用到的 插入一个知识点: npm in ...

  8. iOS音频篇:使用AVPlayer播放网络音乐

    http://www.cocoachina.com/ios/20160324/15767.html 引言 假如你现在打算做一个类似百度音乐.豆瓣电台的在线音乐类APP,你会怎样做? 首先了解一下音频播 ...

  9. 阿里云ecs环境配置

    在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境 https://ninghao.net/blog/1368 阿里云ecs从购买到环境搭建和建站!! ...

  10. 云计算、大数据、编程语言学习指南下载,100+技术课程免费学!这份诚意满满的新年技术大礼包,你Get了吗?

    开发者认证.云学院.技术社群,更多精彩,尽在开发者会场 近年来,新技术发展迅速.互联网行业持续高速增长,平均薪资水平持续提升,互联网技术学习已俨然成为学生.在职人员都感兴趣的“业余项目”. 阿里云大学 ...