#! /usr/bin/env node // Node Cli 应用入口文件必须要有这样的文件头 // 如果是 Linux 或者 macos 系统还需要修改此文件的读写权限为 755 // 具体是通过 chmod 755 cli.js 实现修改 // console.log('working'); // 脚手架的工作过程 // 1.通过命令交互询问用户问题 // 2.根据用户回答的结果生成文件 // 在终端 执行 generate-code const inquirer = require('inquirer'); const fs = require('fs'); const path = require('path'); const ejs = require('ejs'); // 读取json const list = JSON.parse(fs.readFileSync('./generate-code/pc_menu_企业风管.json')); // 目标目录 // const destDir = process.cwd(); const destDir = path.join(process.cwd(), 'src'); function action(type, name, path) { function getEnum(arr, callback) { arr.forEach((el) => { const { code, title, children } = el; if (el.type === type) { // 按钮类型 fs.promises.readFile(path).then((res) => { console.log(code); if (!name.includes(code)) { name += ` ${code} = '${code}', // ${title} `; callback(); } getEnum(children, callback); }); } else { getEnum(children, callback); } }); } getEnum(list, () => { const temp = name + ` }`; fs.writeFileSync(path, temp, { flag: 'w+' }, (err) => { // !err && console.log('写入文件成功!'); }); }); } /*** ===================== 生成弹窗名枚举 ==================== ****/ const enumPath = path.join(destDir, '/common/constants/modalNameEnum.ts'); const name = `export enum ModalEnum { notice = 'notice', // 消息 logout = 'logout', // 退出登录 commomOrder = 'commom-order', // 下单通用界面 detail = 'detail', // 详情`; action(2, name, enumPath) /*** ===================== 生成单据组件名枚举 ==================== ****/ const enumOrderPath = path.join(destDir, '/common/constants/enumOrderComponents.ts'); const orderName = `// 组件名枚举 export enum enumOrderComponents {`; action(4, orderName, enumOrderPath) /*** ===================== 生成路由名枚举 ==================== ****/ const enumRouterPath = path.join(destDir, '/common/constants/enumRouterName.ts'); const routerName = `// 路由名 枚举 export enum EnumRouterName {`; action(1, routerName, enumRouterPath)