component.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. * @Description: 组件快速生成脚本
  3. * @Date: 2018-12-06 10:26:23
  4. * @LastEditTime: 2018-12-12 16:09:40
  5. */
  6. const fs = require('fs');
  7. const path = require('path');
  8. const basePath = path.resolve(__dirname, '../src');
  9. const dirName = process.argv[2];
  10. const capPirName = dirName.substring(0, 1).toUpperCase() + dirName.substring(1);
  11. if (!dirName) {
  12. console.log('文件夹名称不能为空!');
  13. console.log('示例:npm run tep ${capPirName}');
  14. process.exit(0)
  15. }
  16. /**
  17. * @msg: vue页面模版
  18. */
  19. const VueTep = `<template>
  20. <div class="${dirName}-wrap">
  21. {{data.componentName}}
  22. </div>
  23. </template>
  24. <script lang="ts">
  25. import { Component, Vue, Prop } from "vue-property-decorator"
  26. import { Getter, Action } from 'vuex-class'
  27. import { ${capPirName}Data } from '@/types/components/${dirName}.interface'
  28. // import { } from "@/components" // 组件
  29. @Component({})
  30. export default class About extends Vue {
  31. // prop
  32. @Prop({
  33. required: false,
  34. default: ''
  35. }) name!: string
  36. // data
  37. data: ${capPirName}Data = {
  38. componentName: '${dirName}'
  39. }
  40. created() {
  41. //
  42. }
  43. activated() {
  44. //
  45. }
  46. mounted() {
  47. //
  48. }
  49. }
  50. </script>
  51. <style lang="scss">
  52. @import "@/assets/scss/variables.scss";
  53. .${dirName}-wrap {
  54. width: 100%;
  55. }
  56. </style>
  57. `;
  58. // interface 模版
  59. const interfaceTep = `// ${dirName}.Data 参数类型
  60. export interface ${capPirName}Data {
  61. componentName: string
  62. }
  63. `;
  64. fs.mkdirSync(`${basePath}/components/${dirName}`); // mkdir
  65. process.chdir(`${basePath}/components/${dirName}`); // cd views
  66. fs.writeFileSync(`${dirName}.vue`, VueTep); // vue
  67. process.chdir(`${basePath}/types/components`); // cd components
  68. fs.writeFileSync(`${dirName}.interface.ts`, interfaceTep); // interface
  69. process.exit(0);