You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.2 KiB
55 lines
1.2 KiB
const { notEmpty } = require('../utils.js') |
|
|
|
module.exports = { |
|
description: 'generate vue component', |
|
prompts: [{ |
|
type: 'input', |
|
name: 'name', |
|
message: 'component 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 'Components require at least a <script> or <wxTemplate> tag.' |
|
} |
|
return true |
|
} |
|
} |
|
], |
|
actions: data => { |
|
const name = '{{properCase name}}' |
|
const actions = [{ |
|
type: 'add', |
|
path: `src/components/${name}/index.vue`, |
|
templateFile: 'plop-templates/component/index.hbs', |
|
data: { |
|
name: name, |
|
template: data.blocks.includes('template'), |
|
script: data.blocks.includes('script'), |
|
style: data.blocks.includes('style') |
|
} |
|
}] |
|
|
|
return actions |
|
} |
|
}
|
|
|