| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- #!/usr/bin/env node
 
- 'use strict';
 
- /**
 
-  * 代码生成器
 
-  *
 
-  * @author CaiAoLin
 
-  * @date 2018/2/1
 
-  * @version
 
-  */
 
- const path = require('path');
 
- const fs = require('fs');
 
- const command = [];
 
- const params = {};
 
- const rootDir = path.resolve(__dirname, '..');
 
- const appDir = rootDir + '\\app\\';
 
- const controllerDir = appDir + 'controller\\';
 
- const serviceDir = appDir + 'service\\';
 
- const viewDir = appDir + 'view\\';
 
- const templateDir = rootDir + '\\tool\\templates\\';
 
- process.argv.forEach(function(param, index) {
 
-     // 前两个命令忽略 (node 以及当前js目录)
 
-     if (index <= 1) {
 
-         return false;
 
-     }
 
-     if (index === 2) {
 
-         // 记录命令
 
-         command.push(param);
 
-     } else {
 
-         const paramInfo = param.split(':');
 
-         params[paramInfo[0]] = paramInfo.length !== 2 ? '' : paramInfo[1];
 
-     }
 
- });
 
- if (command.length <= 0) {
 
-     console.log('命令错误!');
 
- }
 
- const moduleCommand = command[0];
 
- selectModule(moduleCommand);
 
- /**
 
-  * 模块选择
 
-  *
 
-  * @param {String} moduleCommand - 模块命令
 
-  * @return {void}
 
-  */
 
- function selectModule(moduleCommand) {
 
-     const commandInfo = moduleCommand.split(':');
 
-     if (commandInfo.length !== 2) {
 
-         console.log('命令参数错误');
 
-         return;
 
-     }
 
-     // 读入模板数据
 
-     const templateFile = templateDir + commandInfo[0] + '.txt';
 
-     const templateContent = fs.existsSync(templateFile) ? fs.readFileSync(templateFile) : '';
 
-     switch (commandInfo[0]) {
 
-         case 'controller':
 
-             addFile(commandInfo[1], templateContent, 'controller');
 
-             break;
 
-         case 'service':
 
-             addFile(commandInfo[1], templateContent, 'service');
 
-             break;
 
-         case 'all':
 
-             const controllerContent = fs.readFileSync(templateDir + 'controller.txt');
 
-             const serviceContent = fs.readFileSync(templateDir + 'service.txt');
 
-             const viewContent = fs.readFileSync(templateDir + 'view.txt');
 
-             addFile(commandInfo[1], controllerContent, 'controller');
 
-             addFile(commandInfo[1], serviceContent, 'service');
 
-             addFile(commandInfo[1], viewContent, 'view');
 
-             break;
 
-         default:
 
-             break;
 
-     }
 
- }
 
- /**
 
-  * 新增文件
 
-  *
 
-  * @param {String} name - 文件名
 
-  * @param {String} content - 写入内容
 
-  * @param {String} type - 文件类型
 
-  * @return {void}
 
-  */
 
- function addFile(name, content, type) {
 
-     // 模板变量定义
 
-     const current = new Date();
 
-     const templateData = {
 
-         date: current.getFullYear() + '/' + (current.getMonth() + 1) + '/' + current.getDate(),
 
-     };
 
-     let fileName = '';
 
-     let writeDir = '';
 
-     switch (type) {
 
-         case 'controller':
 
-             fileName = name + '_controller.js';
 
-             // 处理文件大小写
 
-             templateData.name = convertName(name);
 
-             writeDir = controllerDir + fileName;
 
-             break;
 
-         case 'service':
 
-             fileName = name + '.js';
 
-             // 处理文件大小写
 
-             templateData.name = convertName(name);
 
-             templateData.table = params.table === undefined ? name.toLowerCase() : params.table;
 
-             writeDir = serviceDir + fileName;
 
-             break;
 
-         case 'view':
 
-             // 判断是否有对应的文件夹
 
-             const folderName = params.folder === undefined ? name.toLowerCase() : params.folder;
 
-             const folder = viewDir + folderName;
 
-             if (!fs.existsSync(folder)) {
 
-                 fs.mkdirSync(folder);
 
-             }
 
-             fileName = name + '.ejs';
 
-             writeDir = folder + '\\' + fileName;
 
-             break;
 
-         default:
 
-             console.log('不支持对应的模块');
 
-             return;
 
-     }
 
-     // 替换模板变量
 
-     content = templateVarReplace(content, templateData);
 
-     // 写入文件
 
-     fs.writeFileSync(writeDir, content);
 
- }
 
- /**
 
-  * 替换模板变量
 
-  *
 
-  * @param {String} content - 模板文件内容
 
-  * @param {Object} templateData - 变量替换内容
 
-  * @return {String} - 返回替换后的内容
 
-  */
 
- function templateVarReplace(content, templateData) {
 
-     content = content.toString();
 
-     if (templateData.name !== undefined) {
 
-         content = content.replace(/{{NAME}}/g, templateData.name);
 
-     }
 
-     if (templateData.date !== undefined) {
 
-         content = content.replace(/{{DATE}}/g, templateData.date);
 
-     }
 
-     if (templateData.table !== undefined) {
 
-         content = content.replace(/{{TABLE}}/g, templateData.table);
 
-     }
 
-     return content;
 
- }
 
- /**
 
-  * 处理文件名(把test_test转换为大驼峰模式TestTest)
 
-  *
 
-  * @param {String} content - 待转换内容
 
-  * @return {String} - 转换后的结果
 
-  */
 
- function convertName(content) {
 
-     let result = '';
 
-     const contentArray = content.split('_');
 
-     for (const tmp of contentArray) {
 
-         result += tmp.substring(0, 1).toUpperCase() + tmp.substring(1);
 
-     }
 
-     return result;
 
- }
 
 
  |