You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.3 KiB
JavaScript
63 lines
1.3 KiB
JavaScript
const { notEmpty } = require('../utils.js')
|
|
|
|
module.exports = {
|
|
description: 'generate store',
|
|
prompts: [{
|
|
type: 'input',
|
|
name: 'name',
|
|
message: 'store name please',
|
|
validate: notEmpty('name')
|
|
},
|
|
{
|
|
type: 'checkbox',
|
|
name: 'blocks',
|
|
message: 'Blocks:',
|
|
choices: [{
|
|
name: 'state',
|
|
value: 'state',
|
|
checked: true
|
|
},
|
|
{
|
|
name: 'mutations',
|
|
value: 'mutations',
|
|
checked: true
|
|
},
|
|
{
|
|
name: 'actions',
|
|
value: 'actions',
|
|
checked: true
|
|
}
|
|
],
|
|
validate(value) {
|
|
if (!value.includes('state') || !value.includes('mutations')) {
|
|
return 'store require at least state and mutations'
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
],
|
|
actions(data) {
|
|
const name = '{{name}}'
|
|
const { blocks } = data
|
|
const options = ['state', 'mutations']
|
|
const joinFlag = `,
|
|
`
|
|
if (blocks.length === 3) {
|
|
options.push('actions')
|
|
}
|
|
|
|
const actions = [{
|
|
type: 'add',
|
|
path: `src/store/modules/${name}.js`,
|
|
templateFile: 'plop-templates/store/index.hbs',
|
|
data: {
|
|
options: options.join(joinFlag),
|
|
state: blocks.includes('state'),
|
|
mutations: blocks.includes('mutations'),
|
|
actions: blocks.includes('actions')
|
|
}
|
|
}]
|
|
return actions
|
|
}
|
|
}
|