node-file-router
v0.6.0
Published
A powerful file-based routing for Express.js, Bun, pure Node.js and more
Downloads
570
Maintainers
Readme
Node File Router
A powerful file-based routing for Node.js.
It simplifies the creation and organization of API services. You can effortlessly map your project's file structure to your API endpoints, enabling a clear and maintainable codebase.
- Technology Agnostic:
- Express
- Pure Node HTTP
- Bun
- Sockets
- ... whatever compatible with the interface
- 0 dependencies
- CommonJS and ES modules support
- TypeScript support
- 100% test coverage
- Middlewares support
Overview
Imagine you have a project with the following structure:
api/
├── profile/
│ ├── middlware.ts - middleware for profile
│ └── orders.[post].ts - methods in any filenames
├── catalog/
│ └── [[...tags]].ts - several segments
├── collection/
│ └── [cid]/ - slugs in folders
│ └── products/
│ └── [pid].ts - slugs in files
├── index.ts - root
├── middleware.ts - middleware for all routes
└── _404.ts - not found response
Node File Router will automatically map it to your API endpoints:
- [POST]: /profile/orders →
/api/profile/orders.[post].ts
- /catalog/men/black/denim →
/api/catalog/[[...tags]].ts
- /collection/77/products/13 →
/api/collection/[cid]/products/[pid].ts
- / →
index.ts
Some examples of how your file handlers can be written:
Methods in a file
export default {
get(req, res, routeParams) {},
post(req, res, routeParams) {},
patch(req, res, routeParams) {},
}
Single response function
export default function (req, res, routeParams) {}
Middlewares chain
export default [
useErrorHandler,
useLogger,
useAuthGuard,
];
Documentation
npm i node-file-router
Visit website to get started and view the full documentation.
Usage:
Methods routing:
Route matching:
- Plain match - /plain/route/
- Exact slug - /[id]/
- Catching all - /[id1]/[id2]/[idn]/
- Optional catching all - ?/[id1]/[id2]/[idn]/
Support other protocols and frameworks:
Middlewares:
Examples
Visit examples folder to see samples with different module systems, adapters, and use cases.
Support
I usually respond within 24 hours. Fixes typically take 1-3 days. Additionally, I provide time estimations for new features and fixes. Feel free to ask questions, voice ideas, and share your projects on Github Discussion.
Developing
To begin development and contribution, read this guide.