als-dynamic-router
is a Node.js package designed for dynamically creating routes and integrating middleware into your Express applications or similar HTTP servers.
- als-normalize-urlpath update to new version
- if dirPath not exists, it created
The routes
function automatically scans a specified directory for route and middleware files, creates routes from them, and adds them to your application.
-
dirPath
(String): The path to the directory where the route and middleware files are located. -
urlPath
(String): The base URL path for all routes. Defaults to'/'
. -
app
(Express Application): The Express application instance to which the routes will be added.
The function returns an object with the following properties:
-
readyRoutes
(Array): An array of the created routes. -
errors
(Array): An array of errors encountered during the creation of routes.
const express = require('express');
const routes = require('als-dynamic-router');
const app = express();
const dirPath = __dirname + '/routes'; // Path to the directory with route files
// Adding routes to the application
const { readyRoutes, errors } = routes(dirPath, '/', app);
if (errors.length > 0) {
console.error('The following errors occurred while creating routes:', errors);
}
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Files starting with $
are treated as dynamic routes. The $
in the filename will be replaced with :
to conform with Express' dynamic route syntax.
/routes
/.get.js
/login.post.js
/dashboard/$userId.get.js // Dynamic route
/dashboard/auth.mw.js
...
Each route or middleware file should export a corresponding function. Dynamic routes, denoted by $
, will be transformed into Express-compatible routes.
- Route files should be named in the format
[name].[method].js
, where[name]
is the name of the route,[method]
is the HTTP method (get
,post
,put
,delete
, etc.). For dynamic routes, use$
in the name to indicate a dynamic segment (e.g.,$userId
). - Middleware files should be named in the format
[name].mw.js
. If a file name starts with#
, it is considered private middleware, which will be applied only to routes in the same directory. - General middleware (e.g.,
auth.mw.js
) is applied to all routes at its level and below in the directory structure. - Private middleware (e.g.,
#profile.mw.js
) is applied only to routes at the same level in the directory structure.