UNPKG

1.68 kBJavaScriptView Raw
1const express = require('express');
2const morgan = require('morgan');
3const bodyParser = require('body-parser');
4
5const { join, resolve } = require('path');
6
7if (!(process.env.APP_ROOT_PATH)) process.env.APP_ROOT_PATH = resolve();
8
9const appRootPath = (...paths) => join(process.env.APP_ROOT_PATH, ...paths);
10const cors = require('./cors');
11const routes = require('./app-route');
12const proxy = require('./proxy');
13
14const Server = () => {
15 const { createServer } = require('http');
16
17 const config =Object.assign({}, require('./server-config'));
18
19 const folderRoot = config.folders.find(folder => (folder['root'] && folder['root'] === true));
20 const appRootPathDist = appRootPath(folderRoot.path);
21
22 const app = express();
23
24 app.use('/', express.static(appRootPathDist));
25
26 app.use(bodyParser.json());
27 app.use(morgan('dev'));
28 app.use(cors);
29
30 if (config['folders']){
31 config.folders.forEach(folder => {
32 if (typeof(folder) === 'string'){
33 app.use(`/${folder}`, express.static(appRootPath(folder)));
34 } else {
35 app.use(`/${folder.route}`, express.static(appRootPath(folder.path)));
36 }
37 });
38 }
39
40 config.proxyServers.forEach(proxyServer => proxy(proxyServer, app));
41
42 routes(app, appRootPath('server'));
43
44 app.all('/*', (req, res) => res.sendFile('index.html', { root: appRootPathDist }));
45
46 return {
47 start () {
48 const server = createServer(app);
49 server.listen(config.port, config.ip)
50 .on('listening', () => {
51 const { port, address } = server.address();
52 console.log(`Express server started on port ${port} at ${address}.`);
53 });
54 }
55 }
56
57}
58
59module.exports = Server;