UNPKG

webappengine

Version:

A web application server that can host multiple web apps running with Node.js.

61 lines (52 loc) 1.78 kB
/* eslint max-len: 0 */ /* eslint import/first: 0 */ /* eslint import/no-dynamic-require: 0 */ // Defaults to 'production' process.env.NODE_ENV = process.env.NODE_ENV || 'production'; import _ from 'lodash'; import path from 'path'; import program from 'commander'; import pkg from '../package.json'; import { createServer } from './app'; const increaseVerbosityLevel = (val, total) => { return total + 1; }; program .version(pkg.version) .usage('[options]') .option('-p, --port <port>', 'set listen port (default: 8000)', 8000) .option('-H, --host <host>', 'set listen address or hostname (default: 0.0.0.0)', '0.0.0.0') .option('-b, --backlog <backlog>', 'set listen backlog (default: 511)', 511) .option('-c, --config <filename>', 'set multihost configuration file') .option('-v, --verbose', 'increase the verbosity level', increaseVerbosityLevel, 0) .parse(process.argv); const main = (options = {}, callback) => { if (typeof options === 'function') { callback = options; options = {}; } // Set multihost configuration settings let routes = []; if (program.config) { routes = require(path.resolve(program.config)); if (!_.isArray(routes)) { callback(new Error('Check your multihost configuration file to ensure it contain valid routes.')); return; } } createServer({ port: program.port, host: program.host, backlog: program.backlog, routes: routes, verbosity: program.verbose, ...options // Override command-line options if specified }) .on('ready', (server) => { callback(null, server); }) .on('error', (err) => { callback(err); }); }; export default main;