| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #! /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');
- /*** ===================== 生成弹窗名枚举 ==================== ****/
- const enumPath = path.join(destDir, '/common/constants/modalNameEnum.ts');
- let name = `export enum ModalEnum {
- notice = 'notice', // 消息
- logout = 'logout', // 退出登录
- commomOrder = 'commom-order', // 下单通用界面
- detail = 'detail', // 详情`;
- function getModalEnum(arr, callback) {
- arr.forEach((el) => {
- const { code, title, children, type } = el;
- if (type === 2) {
- // 按钮类型
- fs.promises.readFile(enumPath).then((res) => {
- console.log(code);
- if (!name.includes(code)) {
- name += `
- ${code} = '${code}', // ${title}
- `;
- callback();
- }
- getModalEnum(children, callback);
- });
- } else {
- getModalEnum(children, callback);
- }
- });
- }
- getModalEnum(list, () => {
- const temp =
- name +
- `
- }`;
- // fs.unlink(enumPath, (err) => {
- // // !err && console.log('文件删除成功!');
- // });
- fs.writeFileSync(enumPath, temp, { flag: 'w+' }, (err) => {
- // !err && console.log('写入文件成功!');
- });
- });
- //检查某个目录是否存在
- function hasFile(url, code) {
- const temp = path.join(url, `/${code}`);
- try {
- //检查某个目录是否存在
- fs.statSync(temp);
- return true;
- } catch (error) {
- console.log(temp);
- console.log(error);
- return false;
- }
- }
- // 模板目录
- const tempDir = path.join(__dirname, 'templates');
- function writeFile(url, code) {
- if (!hasFile(url, code)) {
- const temp = path.join(url, `/${code}`);
- console.log(temp);
- return fs.promises.mkdir(temp);
- }
- return Promise.resolve(false);
- }
- // list.forEach((el) => {
- // const { code, children } = el;
- // writeFile(destDir, code).then(() => {
- // if (children) {
- // children.forEach((item) => {
- // writeFile(path.join(destDir, `/${code}`), item.code).then(() => {
- // if (item.children) {
- // item.children.forEach((e) => {
- // const path1 = `/${code}/${item.code}`;
- // writeFile(path.join(destDir, path1), e.code).then(() => {
- // const path2 = `${path1}/${e.code}`;
- // // index.vue
- // if (!hasFile(path.join(destDir, path2), 'index.vue')) {
- // const template = `
- // `;
- // fs.writeFileSync(path.join(destDir, `${path2}/index.vue`), template);
- // }
- // // components
- // writeFile(path.join(destDir, `${path2}`), 'components').then(() => {
- // if (e.children) {
- // const path3 = `${path2}/components`;
- // e.children.forEach((ele) => {
- // writeFile(path.join(destDir, path3), ele.code).then((res) => {
- // if (res) {
- // if (
- // !hasFile(
- // path.join(destDir, `${path3}/${ele.code}`),
- // 'index.vue'
- // )
- // ) {
- // const template = `
- // `;
- // fs.writeFileSync(
- // path.join(destDir, `${path3}${ele.code}/index.vue`),
- // template
- // ).then(res => {
- // if (res) {
- // }
- // }
- // }
- // }
- // });
- // });
- // }
- // });
- // });
- // });
- // }
- // });
- // });
- // }
- // });
- // });
|