import fs = require('fs'); import path = require('path'); import { Application } from '../interfaces'; import { appDir } from '../utils'; export default function(app: Application, pathToModules: string, prefix: string = null): void { pathToModules = path.resolve(appDir, pathToModules); if (!fs.existsSync(pathToModules)) return fs.mkdirSync(pathToModules); fs.readdirSync(pathToModules).forEach(moduleName => { if (moduleName[0] === '.') return; // skip hidden files and directories if (fs.lstatSync(`${pathToModules}/${moduleName}`).isFile()) return; let route = `/${moduleName}`; if (prefix) route = `/${prefix}/${moduleName}`; try { app.use(route, require(`${pathToModules}/${moduleName}/router`).default); } catch (exception) { app.use(require(`${pathToModules}/${moduleName}/root-router`).default); } }); }