polar
Version:
boilerplate for a basic express setup with metaserve
72 lines (64 loc) • 2.51 kB
JavaScript
// Generated by CoffeeScript 1.8.0
(function() {
var express, express_busboy, express_session, setup, utils,
__slice = [].slice;
express = require('express');
express_busboy = require('express-busboy');
express_session = require('express-session');
utils = require('./utils');
setup = function() {
var RedisStore, app, config, configs, middleware, _i, _len, _ref, _ref1, _ref2;
configs = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
config = utils.merge_all(configs);
app = config.app || express();
if (config.app) {
app = config.app;
delete config.app;
}
app.config = config;
app.set('views', config.view_dir || config.static_dir || '.');
app.set('view engine', config.view_engine || 'pug');
app.use(config.logger || function(req, res, next) {
console.log("[" + (new Date().toISOString()) + "] " + req.method + " " + req.url);
return next();
});
app.use(express.json(config.json));
express_busboy.extend(app, Object.assign(config.busboy || {}, {
upload: true
}));
if (config.session != null) {
RedisStore = require('connect-redis')(express_session);
app.use(express_session(utils.merge_objs({
key: "sid:" + (((_ref = config.session.cookie) != null ? _ref.domain : void 0) || "*"),
store: new RedisStore({
host: ((_ref1 = config.redis) != null ? _ref1.host : void 0) || 'localhost'
}),
cookie: {
maxAge: 1000 * 60 * 60 * 24 * 30 * 3
}
}, config.session)));
}
if (config.middleware != null) {
_ref2 = config.middleware;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
middleware = _ref2[_i];
app.use(middleware);
}
}
app.useMetaserve = function() {
var metaserve, _ref3, _ref4;
metaserve = require('metaserve');
return app.use(metaserve(((_ref3 = config.metaserve) != null ? _ref3.config : void 0) || config.static_dir, ((_ref4 = config.metaserve) != null ? _ref4.compilers : void 0) || {
css: [!config.debug ? require('metaserve-bouncer') : void 0, require('metaserve-css-postcss')],
js: [!config.debug ? require('metaserve-bouncer') : void 0, require('metaserve-js-coffee-reactify')]
}));
};
app.start = function() {
return app.listen(config.port, function() {
return console.info("Listening on :" + config.port);
});
};
return app;
};
module.exports = setup;
}).call(this);