rprcli
Version:
Reaper.js is a powerful TypeScript-based framework designed to streamline backend development. It offers built-in database migrations, seeders, and SQL query utilities, making it easy to manage data efficiently. With native support for TSX and JSX renderi
38 lines (30 loc) • 1.15 kB
JavaScript
const fs = require('fs');
const path = require('path');
function loadModules(dir, obj) {
fs.readdirSync(dir)
.filter(name => !name.endsWith("map") && !name.endsWith("css"))
.forEach(file => {
const fullPath = path.join(dir, file);
delete require.cache[require.resolve(fullPath)]; // Clear cache
obj[file] = require(fullPath).default;
});
}
function reloadApp() {
loadModules(path.join(process.cwd(), "./.reaper/out/api/controllers/"), APP.controllers);
loadModules(path.join(process.cwd(), "./.reaper/out/api/middleware/"), APP.middleware);
loadModules(path.join(process.cwd(), "./.reaper/out/api/events/"), APP.listeners);
const routesPath = path.join(process.cwd(), "./.reaper/out/routes/index");
delete require.cache[require.resolve(routesPath)];
APP.routes = require(routesPath).default;
APP.templates = fs.readdirSync(path.join(process.cwd(), "./app/views"))
.map(file => file.replace(/\.(tsx|ts|jsx|js)$/, ""));
}
const APP = {
controllers: {},
middleware: {},
listeners: {},
routes: null,
templates: []
};
reloadApp(); // Initial load
module.exports = { APP, reloadApp };