在上一篇文章中,咱们提到了meta.js,此次咱们详细了解一下meta.js里面各个模块的写法。javascript
对于 meta.js/metajson
文件, 目前主要字段以下:vue
prompts<Object>
: 收集用户自定义数据filters<Object>
: 根据条件过滤文件completeMessage<String>
: 模板渲染完成后给予的提示信息, 支持 handlebars 的 mustaches 表达式complete<Function>
: 模板渲染完成后的回调函数, 优先于 completeMessage
helpers<Object>
: 自定义的 Handlebars 辅助函数prompts是一个对象,对象里的每个子对象是一个Inquirer.js,与用户进行交互,询问问题的。先看个例子:java
{ 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各类参数配置方法
input(输入,默认类型)
, confirm(y/n)
, list(列表)
, rawlist(带下标的列表)
, expand(下标是字母的列表)
, checkbox(复选框)
, password(密码)
, editor(编辑大篇文字)。
当全部问题问完以后,template
目录下的全部文件将会用 Handlebars 进行渲染. 用户输入的数据会做为模板渲染时的使用数据。vuex
filters
字段是一个包含文件过滤规则的对象, 键用于定义符合 minimatch glob pattern 规则的过滤器, 键值是 prompts
中用户的输入值或者表达式,代码以下:npm
filters: { "store/*": "vuex" }
在上面的询问中,若是你vuex选项选择了no,你的store文件夹以及其下面的子文件将被删除,蜀国选的yes,store文件夹以及其下面的子文件将被保留。json
在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为一个字符串。less
若是同时写了这两个,会调用complete函数,即complete的优先级高。函数
"completeMessage": "请按如下步骤启动,耐心等待:\n\n {{^inPlace}}cd {{destDirName}}\n {{/inPlace}}npm i\n npm run dev 或者 npm start"
在completeMessage中支持插值表达式的写法。ui