'use strict'; const commander = require('commander'); const fs = require('fs'); const cp = require('child_process'); const template = function (name, item = '') { switch (item) { case 'controller': return `module.exports = {\n\n};`; case 'model': // eslint-disable-next-line no-case-declarations const schemaName = name.split('').map((e,i) => i===0 ? e.toUpperCase() : e).join(''); return `const mongoose = require('mongoose');\n\nconst ${schemaName}Schema = new mongoose.Schema({\n\n},{});\n\nconst ${schemaName}Model = mongoose.model('${schemaName}', ${schemaName}Schema);\n\nmodule.exports = ${schemaName}Model;`; case 'service': return `const indexRoute = '/${name}';\nconst controller = require('./${name}.controller');\nconst services = [];\n\nmodule.exports = services.map(service => {\n// 可以在此处对要导出的服务map进行统一处理\n\tservice.url = indexRoute + service.url;\n\treturn service;\n});`; } }; commander .version(this.VERSION, '-v, --version') .option('-n, --name ', 'module name.') .parse(process.argv); const name = commander.name; const subList = ['controller', 'model', 'service']; cp.execSync(`mkdir ./src/modules/${name}`); subList.map(item => { cp.execSync(`touch ./src/modules/${name}/${name}.${item}.js`); fs.writeFile(`./src/modules/${name}/${name}.${item}.js`, `'use strict';\n\n` + template(name, item) , () => { console.log(`module ${name} - ${item} 创建完毕`); }); });