prompt.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. const { notEmpty } = require('../utils.js')
  2. module.exports = {
  3. description: 'generate a view',
  4. prompts: [{
  5. type: 'input',
  6. name: 'name',
  7. message: 'view name please',
  8. validate: notEmpty('name')
  9. },
  10. {
  11. type: 'checkbox',
  12. name: 'blocks',
  13. message: 'Blocks:',
  14. choices: [{
  15. name: '<template>',
  16. value: 'template',
  17. checked: true
  18. },
  19. {
  20. name: '<script>',
  21. value: 'script',
  22. checked: true
  23. },
  24. {
  25. name: 'style',
  26. value: 'style',
  27. checked: true
  28. }
  29. ],
  30. validate(value) {
  31. if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
  32. return 'View require at least a <script> or <template> tag.'
  33. }
  34. return true
  35. }
  36. }
  37. ],
  38. actions: data => {
  39. const name = '{{name}}'
  40. console.log("xxxxxxxxxxxxxxxxxxxxxxxxx")
  41. console.log(name)
  42. const actions = [{
  43. type: 'add',
  44. path: `src/views/${name}/index.vue`,
  45. templateFile: 'plop-templates/view/index.hbs',
  46. data: {
  47. name: name,
  48. template: data.blocks.includes('template'),
  49. script: data.blocks.includes('script'),
  50. style: data.blocks.includes('style')
  51. }
  52. }]
  53. return actions
  54. }
  55. }