cli.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #! /usr/bin/env node
  2. // Node Cli 应用入口文件必须要有这样的文件头
  3. // 如果是 Linux 或者 macos 系统还需要修改此文件的读写权限为 755
  4. // 具体是通过 chmod 755 cli.js 实现修改
  5. // console.log('working');
  6. // 脚手架的工作过程
  7. // 1.通过命令交互询问用户问题
  8. // 2.根据用户回答的结果生成文件
  9. // 在终端 执行 generate-code
  10. const inquirer = require('inquirer');
  11. const fs = require('fs');
  12. const path = require('path');
  13. const ejs = require('ejs');
  14. // 读取json
  15. const list = JSON.parse(fs.readFileSync('./generate-code/pc_menu_企业风管.json'));
  16. // 目标目录
  17. // const destDir = process.cwd();
  18. const destDir = path.join(process.cwd(), 'src');
  19. function action(type, name, path) {
  20. function getEnum(arr, callback) {
  21. arr.forEach((el) => {
  22. const { code, title, children } = el;
  23. if (el.type === type) {
  24. // 按钮类型
  25. fs.promises.readFile(path).then((res) => {
  26. console.log(code);
  27. if (!name.includes(code)) {
  28. name += `
  29. ${code} = '${code}', // ${title}
  30. `;
  31. callback();
  32. }
  33. getEnum(children, callback);
  34. });
  35. } else {
  36. getEnum(children, callback);
  37. }
  38. });
  39. }
  40. getEnum(list, () => {
  41. const temp =
  42. name +
  43. `
  44. }`;
  45. fs.writeFileSync(path, temp, { flag: 'w+' }, (err) => {
  46. // !err && console.log('写入文件成功!');
  47. });
  48. });
  49. }
  50. /*** ===================== 生成弹窗名枚举 ==================== ****/
  51. const enumPath = path.join(destDir, '/common/constants/modalNameEnum.ts');
  52. const name = `export enum ModalEnum {
  53. notice = 'notice', // 消息
  54. logout = 'logout', // 退出登录
  55. commomOrder = 'commom-order', // 下单通用界面
  56. detail = 'detail', // 详情`;
  57. action(2, name, enumPath)
  58. /*** ===================== 生成单据组件名枚举 ==================== ****/
  59. const enumOrderPath = path.join(destDir, '/common/constants/enumOrderComponents.ts');
  60. const orderName = `// 组件名枚举
  61. export enum enumOrderComponents {`;
  62. action(4, orderName, enumOrderPath)
  63. /*** ===================== 生成路由名枚举 ==================== ****/
  64. const enumRouterPath = path.join(destDir, '/common/constants/enumRouterName.ts');
  65. const routerName = `// 路由名 枚举
  66. export enum EnumRouterName {`;
  67. action(1, routerName, enumRouterPath)