vue3-vant-mobile/plop-templates/component/prompt.js

51 lines
1.1 KiB
JavaScript
Raw Normal View History

2022-10-22 12:51:16 +00:00
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: '<template>',
value: 'template',
checked: true,
}, {
name: '<script>',
value: 'script',
checked: true,
}, {
name: 'style',
value: 'style',
checked: true,
}],
validate(value) {
2022-10-22 12:51:16 +00:00
if (!value.includes('script') && !value.includes('template'))
return 'Components require at least a <script> or <template> tag.'
return true
},
}],
2022-10-22 12:51:16 +00:00
actions: (data) => {
const name = '{{properCase name}}'
const actions = [{
type: 'add',
path: `src/components/${name}/index.vue`,
templateFile: 'plop-templates/component/index.hbs',
data: {
2022-10-22 12:51:16 +00:00
name,
template: data.blocks.includes('template'),
script: data.blocks.includes('script'),
style: data.blocks.includes('style'),
},
2022-10-22 12:51:16 +00:00
}]
2022-10-22 12:51:16 +00:00
return actions
},
2022-10-22 12:51:16 +00:00
}