31 lines
1.5 KiB
JavaScript
31 lines
1.5 KiB
JavaScript
'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 <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} 创建完毕`); });
|
|
});
|
|
|