React-Router based file-system routing for Express.js.
npm i file-router-express
Note that the router is extension independent, i.e.
.js
and.ts
files are treated the same.
import express from "express"
import router from "file-router-express"
const app = express()
app.use("/", router)
app.listen(PORT)
Examples:
index.js => /
route.js => /route
route1/route2.js => route1/route2
route1/[route2].js => route1/:route2 // { 'params': { route2 } }
route1/[route2]/[route3].js => route1/:route2/:route3 // { 'params': { route2, route3 } }
route1/[...route2].js => route1/*
Named exports take higher preference over default exports
// Named exports
export const get = (req, res, next) => {...} // Same as router.get('route', get)
export const post = (req, res, next) => {...} // Same as router.post('route', post)
// .
// .
export const del = (req, res, next) => {...} // Use 'del' instead of 'delete', same as router.delete('route', del)
// .
// .
// .
// Default export
export default (req, res, next) => {...} // Same as router.all('route', (req, res, next) => {...})
Export an array of middleware functions along with the handler instead of the handler alone.
// Named exports
export const get = [middleware1, middleware2, ..., handler] // Same as router.get('route', middleware1, middleware2, ..., handler)
// .
// .
// Default export
export default [middleware1, middleware2, ..., handler] // Same as router.all('route', middleware1, middleware2, ..., handler)
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Read CONTRIBUTING.md.
- Fork the project.
- Create your Feature Branch. (
git checkout -b feature/AmazingFeature
) - Commit your Changes. (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch. (
git push origin feature/AmazingFeature
) - Open a Pull Request.