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
 | |
|   }
 | |
| }
 |