| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #! /usr/bin/env node
- // Node Cli 应用入口文件必须要有这样的文件头
- // 如果是 Linux 或者 macos 系统还需要修改此文件的读写权限为 755
- // 具体是通过 chmod 755 cli.js 实现修改
- // console.log('working');
- // 脚手架的工作过程
- // 1.通过命令交互询问用户问题
- // 2.根据用户回答的结果生成文件
- 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/pages');
- //检查某个目录是否存在
- function hasFile(url, code) {
- const temp = path.join(url, `/${code}`);
- try {
- //检查某个目录是否存在
- fs.statSync(temp);
- return true;
- } catch (error) {
- return false;
- }
- }
- // 模板目录
- const tempDir = path.join(__dirname, 'templates');
- function writeFile(url, code) {
- if (!hasFile(url, code)) {
- return fs.promises.mkdir(temp);
- }
- return Promise.resolve();
- }
- 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) => {
- writeFile(path.join(destDir, `/${code}/${item.code}`), e.code).then(() => {
- if (!hasFile(path.join(destDir, `/${code}/${item.code}`), 'index.vue')) {
- const obj = { code: e.code };
- // ejs.renderFile(tempDir, obj, (err, result) => {
- // if (err) throw err;
- // // fs.writeFileSync(path.join(destDir, `/${code}/${item.code}/${e.code}`), result);
- // });
- fs.writeFileSync(
- path.join(destDir, `/${code}/${item.code}/${e.code}/index.vue`),
- ''
- );
- }
- writeFile(path.join(destDir, `/${code}/${item.code}/${e.code}`), 'components');
- });
- });
- }
- });
- });
- }
- });
- });
- // console.log(list);
- // inquirer
- // .prompt([
- // {
- // type: 'input',
- // name: 'name',
- // message: 'Project name'
- // }`
- // ])
- // .then((ansers) => {
- // // console.log(ansers);
- // // 根据用户回答的结果生成文件
- // // 模板目录
- // const tempDir = path.join(__dirname, 'templates');
- // // 目标目录
- // const destDir = process.cwd();
- // // 将模板下的文件全部转换到目标下目录
- // fs.readdir(tempDir, (err, files) => {
- // if (err) throw err;
- // files.forEach((file) => {
- // // 通过目标引擎渲染文件
- // ejs.renderFile(path.join(tempDir, file), ansers, (err, result) => {
- // if (err) throw err;
- // // 将结果写入目标文件路径
- // // fs.writeFileSync(path.join(destDir, file), result);
- // });
- // });
- // });
- // });
|