60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
const { notEmpty } = require('../utils.js');
|
|
|
|
module.exports = {
|
|
description: 'generate a view',
|
|
prompts: [
|
|
{
|
|
type: 'input',
|
|
name: 'name',
|
|
message: 'view name please',
|
|
validate: notEmpty('name'),
|
|
},
|
|
{
|
|
type: 'checkbox',
|
|
name: 'blocks',
|
|
message: 'Blocks:',
|
|
choices: [
|
|
{
|
|
name: '<wxTemplate>',
|
|
value: 'template',
|
|
checked: true,
|
|
},
|
|
{
|
|
name: '<script>',
|
|
value: 'script',
|
|
checked: true,
|
|
},
|
|
{
|
|
name: 'style',
|
|
value: 'style',
|
|
checked: true,
|
|
},
|
|
],
|
|
validate(value) {
|
|
if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
|
|
return 'View require at least a <script> or <wxTemplate> tag.';
|
|
}
|
|
return true;
|
|
},
|
|
},
|
|
],
|
|
actions: (data) => {
|
|
const name = '{{name}}';
|
|
const actions = [
|
|
{
|
|
type: 'add',
|
|
path: `src/views/${name}/index.vue`,
|
|
templateFile: 'plop-templates/view/index.hbs',
|
|
data: {
|
|
name: name,
|
|
template: data.blocks.includes('template'),
|
|
script: data.blocks.includes('script'),
|
|
style: data.blocks.includes('style'),
|
|
},
|
|
},
|
|
];
|
|
|
|
return actions;
|
|
},
|
|
};
|