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
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,
];
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:
Visit examples folder to see samples with different module systems, adapters, and use cases.
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.
To begin development and contribution, read this guide.