jcs-middleware
Version:
Jade, CoffeeScript, Stylus middleware for Express.js
77 lines (63 loc) • 1.95 kB
JavaScript
// vim: set ai et nu ts=4 sw=4 cc=100:
var express = require('express')
, session = require('express-session')
, path = require('path')
, logger = require('morgan')
, cookieParser= require('cookie-parser')
, bodyParser = require('body-parser')
, appConfig = require('./appConfig')
;
require('coffee-script/register');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// app use chain
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({
secret: appConfig.sessionSecret,
saveUninitialized: true,
resave: true,
cookie: {
secure: false,
maxAge: appConfig.sessionAge
}
}));
// jcs plugin.
// put the plugin into app's value paire, for cli tools.
app.set('jcs-middleware', require('./jcs'));
app.use(appConfig.prefix, app.get('jcs-middleware').middleware);
// Static plugin. Must be after jcs plugin.
app.use(appConfig.prefix, express.static(path.join(__dirname, 'public')));
// If prefixed, redirect root to prefixed dir.
app.use('/', function(req, res, next){
if (appConfig.prefix && appConfig.prefix !== '/' && req.path === '/'){
res.redirect(appConfig.prefix);
} else {
next();
}
});
////////////////////////
// Here goes the routing
////////////////////////
app.use(appConfig.prefix, require('./routes/index'));
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
(function(debugMode){
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: debugMode ? err : {}
});
});
})(appConfig.debugMode);
module.exports = app;