Nodejs Express Autodiscover Routes

Node: Autodiscover routes

In your server.js file:

var http = require('http'),
    express = require('express'),
    app = express();

console.log("***************************");
console.log("MockServer: start, listening on port ", port);
console.log("time: ", new Date());

/*
 * Load all routes, we can dynamically add 
 * route handlers inside the routes directory.
 */
require('./routes')(app);

/*
 * Serve all assets in public directory.
 */
app.use(express.static(__dirname + '/public/'));
/**
 * Routes autodiscovery module.
 */
var fs = require('fs');

module.exports = function(app){
    console.log("Routes: loading...");

    var name;
    fs.readdirSync(__dirname).forEach(function(file){
        if(file === 'index.js') return;
        name = file.substr(0, file.indexOf('.'));
        /*
         * Dynamically include and initialize all route files.
         */
        require('./'+name)(app);
    });
};

Then, your route files would look like this:

/**
 * Exports API routes.
 * @param  {Object} app Express like object
 */
module.exports = function(app){
    console.log(' - API route handler');
    console.log(' |- pledge');

    /**
     * /pledge handler
     * @param  {[type]}   req  [description]
     * @param  {[type]}   res  [description]
     * @param  {Function} next [description]
     * @return {[type]}        [description]
     */
    app.get('/pledge', function(req, res, next) {
        res.json({ success:true,count:0,pledges:[]});
    });
}