UNPKG

2.62 kBJavaScriptView Raw
1
2
3const _ = require('lodash');
4const bodyParser = require('body-parser');
5const compression = require('compression');
6const cons = require('consolidate');
7const cookieParser = require('cookie-parser');
8const cookieSession = require('cookie-session');
9const express = require('express');
10const expressValidator = require('express-validator');
11const i18nFsBackend = require('i18next-node-fs-backend');
12const i18nMiddleware = require('i18next-express-middleware');
13const i18next = require('i18next');
14
15const cache = require('./cache');
16const cls = require('./cls');
17const config = require('./config');
18const db = require('./db/db');
19const errorHandler = require('./connect/errorhandler');
20const flash = require('./connect/flash');
21const helpers = require('./connect/helpers');
22const logger = require('./logger');
23const mailer = require('./mailer');
24const multipart = require('./connect/multipart');
25const plugins = require('./plugins');
26
27
28//
29const app = module.exports = express();
30
31var services = {
32 logger,
33 cache,
34 db,
35 mailer,
36 cls
37};
38
39//
40module.exports.init = function(name, service) {
41 services[name] = service;
42};
43
44//
45module.exports.configure = function() {
46
47 config.init();
48
49 _.forEach(services, function(service, key) {
50 service.init(config);
51 });
52
53 plugins.init();
54
55 i18next
56 .use(i18nMiddleware.LanguageDetector)
57 .use(i18nFsBackend)
58 .init(config.i18n);
59
60 app.enable('trust proxy');
61
62 // template engine
63 app.engine('dust', cons.dust);
64 app.set('view engine', 'dust');
65 app.set('views', './views');
66
67 app.use(compression());
68 app.use(express.static('public'));
69
70 if (config.env !== 'test') {
71 app.use(errorHandler.init(app));
72 app.use(cookieParser(config.signedCookiesSecret));
73 app.use(cookieSession(config.cookieSessionConfig));
74 app.use(bodyParser.json({ limit: config.bodyParser.limit }));
75 app.use(bodyParser.urlencoded({ limit: config.bodyParser.limit, extended: true }));
76 app.use(multipart);
77 }
78
79 app.use(flash);
80 app.use(expressValidator());
81 app.use(i18nMiddleware.handle(i18next));
82 app.use(helpers);
83
84 // load routes
85 const routes = require('./routes');
86 routes.init(app);
87
88 if (config.env !== 'test') {
89 app.use(errorHandler.error);
90 }
91
92}
93
94//
95module.exports.run = function() {
96
97 module.exports.configure();
98
99 app.server = app.listen(config.httpport, function () {
100 logger.info('Listening to port %s', config.httpport);
101 });
102};