mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
45 lines
1.3 KiB
JavaScript
Executable File
45 lines
1.3 KiB
JavaScript
Executable File
import fs from "fs"
|
|
|
|
function createRoutesFromDirectory(startFrom, directoryPath, router) {
|
|
const files = fs.readdirSync(directoryPath)
|
|
|
|
files.forEach((file) => {
|
|
const filePath = `${directoryPath}/${file}`
|
|
|
|
const stat = fs.statSync(filePath)
|
|
|
|
if (stat.isDirectory()) {
|
|
createRoutesFromDirectory(startFrom, filePath, router)
|
|
} else if (file.endsWith(".js") || file.endsWith(".jsx") || file.endsWith(".ts") || file.endsWith(".tsx")) {
|
|
let splitedFilePath = filePath.split("/")
|
|
|
|
// slice the startFrom path
|
|
splitedFilePath = splitedFilePath.slice(splitedFilePath.indexOf(startFrom) + 1)
|
|
|
|
const method = splitedFilePath[0]
|
|
|
|
let route = splitedFilePath.slice(1, splitedFilePath.length).join("/")
|
|
|
|
route = route.replace(".jsx", "")
|
|
route = route.replace(".js", "")
|
|
route = route.replace(".ts", "")
|
|
route = route.replace(".tsx", "")
|
|
|
|
if (route === "index") {
|
|
route = "/"
|
|
} else {
|
|
route = `/${route}`
|
|
}
|
|
|
|
let handler = require(filePath)
|
|
|
|
handler = handler.default || handler
|
|
|
|
router[method](route, handler)
|
|
}
|
|
})
|
|
|
|
return router
|
|
}
|
|
|
|
export default createRoutesFromDirectory |