dl_mer_plat_admin/plop-templates/store/prompt.js
2025-03-04 16:01:59 +08:00

67 lines
1.4 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;
},
};