
Product
Introducing Socket Firewall Enterprise: Flexible, Configurable Protection for Modern Package Ecosystems
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.
express-vhosts-autoloader
Advanced tools
Autoloads express middlewares using the hostname as the module foldername.
This module helps you create an Express JS server with virtual hosts auto and manual management.
npm install express-vhosts-autoloader
This module autoloads your express app's as express middlewares when their directories matches the domain name.
Your directory names must be the same as your domain names in order for this module to work.
Let's assume you have this directory structure :
My Server Directory :
server.js
node_modules
expressexpress-vhosts-autoloaderwww.nodeapp1.com
app.js www.nodeapp2.com
app.jswww.nodeapp3.com
app.jsAnd your domain names (pointing to your server) are :
www.nodeapp1.comwww.nodeapp2.comwww.nodeapp3.com// Load express.
var express = require("express");
// Load express vhosts autoloader.
var vhostsAutoloader = require("express-vhosts-autoloader");
// Create express server.
var expressServer = express();
// Trigger vhostsAutoloader with expressServer as parameter.
vhostsAutoloader(expressServer);
// Start your express web server
var port = process.env["PORT"] || 80;
var server = expressServer.listen(port, function () {
console.log("Server listening on port %d ", port);
});
It works !
The express vhosts autoloader will load each app.js module in each directory as an express middleware triggered only when the required host (i.e domain name) is provided.
Each app.js middleware should end with something like module.exports.app = app or exports.app = app
Promise <= vhostsAutoloader(expressServer, options)This function tries to load any app.js file in any directory in the server root directory as an express middleware trigger only when the required domain name is provider in the request.
expressServer (object, required) express server instance.
options : (object, optional).
options.debug (boolean, optional) : defaults to false. If true makes the module more verbose in the console.options.directory (string, optional) : defaults to server root directory. If set vhostsAutoloader tries to load any app.js from the directory provided.options.ignoreList (array, optional) : defaults to [".git",".vscode",".circleci",".nyc_output","log","logs","test","tests","coverage","node_modules"]// Tries to load any file in directories located inside /home/user
vhostsAutoloader(expressServer, {
directory: "/home/user",
});
Promise <= vhostsAutoloader.loadVhost(options)This utility method loads an express middleware triggered only when the required host (i.e domain name) is provided.
options : (object, required).
options.debug (boolean) : defaults to false. If true makes the module more verbose in the console.options.domainName (string, required) : the domain name / directory nameoptions.mainFile (string, optional) : defaults to 'app'. If set the method will try to load the file named after the provided value.options.exportsProperty (string, optional) : defaults to 'app'. If set the method will try to use the exports property named after the provided valueoptions.expressServer (object, optional | required) : Optional if used after calling vhostsAutoloader. Required if vhostsAutoloader.loadVhost is used alone.options.directory (object, optional) : defaults to server root directory. If set vhostsAutoloader.loadVhost tries to load the module from the directory\domainName directory.Used after calling vhostsAutoloader
vhostsAutoloader.loadVhost({
domainName: "www.foo.com",
});
For www.foo.com directory .\www.foo.com will be served and app.js module required, needs module.exports.app to be set in app.js.
vhostsAutoloader.loadVhost({
domainName: "www.foobar.com",
mainFile: "index",
});
For www.foobar.com directory .\www.foobar.com will be served and index.js module required, needs module.exports.index to be set in index.js.
vhostsAutoloader.loadVhost({
domainName: "www.foobarfoo.com",
mainFile: "index",
exportsProperty: "bar",
});
For www.foobarfoo.com directory .\www.foobarfoo.com will be served, index.js module required, needs module.exports.bar to be set in index.js.
Used without calling vhostsAutoloader
// Load express.
var express = require("express");
// Load express vhosts autoloader.
var vhostsAutoloader = require("express-vhosts-autoloader");
// Create express server.
var expressServer = express();
vhostsAutoloader.loadVhost({
domainName: "www.foobarfoo.com",
mainFile: "foo",
exportsProperty: "bar",
expressServer: expressServer,
});
For www.foobarfoo.com directory .\www.foobarfoo.com will be served, foo.js module required, needs module.exports.bar to be set in foo.js.
FAQs
Autoloads express middlewares using the hostname as the module foldername.
We found that express-vhosts-autoloader demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.

Product
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.