You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
966 B
33 lines
966 B
const fs = require('fs');
|
|
const path = require('path');
|
|
const Bean = require('../utils/index.js');
|
|
|
|
// 控制器收集规则
|
|
const routes = fs.readdirSync(path.resolve(__dirname));
|
|
const controler = {};
|
|
routes.forEach(route => {
|
|
if (fs.statSync(path.resolve(__dirname, route)).isDirectory()) {
|
|
const deep = Bean.readFileDeep(path.resolve(__dirname, route)).file;
|
|
|
|
controler[route] = {};
|
|
deep.forEach(file => {
|
|
Object.keys(require(file)).forEach(key => {
|
|
if (Object.keys(controler[route]).includes(key)) {
|
|
let str = "注意有相同的控制器:{" + route + ':' + key + '}';
|
|
throw str
|
|
}
|
|
})
|
|
controler[route] = {
|
|
...controler[route],
|
|
...require(file)
|
|
}
|
|
})
|
|
}
|
|
if (fs.statSync(path.resolve(__dirname, route)).isFile()) {
|
|
if (route !== 'index.js') {
|
|
controler[route.slice(0, -3)] = require(path.resolve(__dirname, route));
|
|
}
|
|
}
|
|
})
|
|
|
|
module.exports = controler
|