1 | const fs = require('fs');
|
2 | const path = require('path');
|
3 | const http = require('http');
|
4 | const util = require('./util');
|
5 | const basename = path.basename;
|
6 | const server = require('./server');
|
7 | const express = require('express');
|
8 | const app = express();
|
9 | const bodyParser = require('body-parser');
|
10 | const compression = require('compression');
|
11 |
|
12 | exports = module.exports = (options = {}) => {
|
13 | const parsedOptions = Object.assign({}, {
|
14 | port: options.port || process.env.PORT || 3000
|
15 | }, options)
|
16 |
|
17 | server.init(options);
|
18 | server.onRequest = server.onRequest.bind(server);
|
19 |
|
20 | app.disable('x-powered-by');
|
21 | app.use(compression());
|
22 |
|
23 | app.get('*', server.onRequest);
|
24 |
|
25 |
|
26 | app.post('*', bodyParser.json({ type: () => true }), server.onRequest);
|
27 |
|
28 | app.listen(parsedOptions, () => util.log(`Prerender server accepting requests on port ${parsedOptions.port}`))
|
29 |
|
30 | return server;
|
31 | };
|
32 |
|
33 | fs.readdirSync(__dirname + '/plugins').forEach((filename) => {
|
34 | if (!/\.js$/.test(filename)) return;
|
35 |
|
36 | var name = basename(filename, '.js');
|
37 |
|
38 | function load() {
|
39 | return require('./plugins/' + name);
|
40 | };
|
41 |
|
42 | Object.defineProperty(exports, name, {
|
43 | value: load
|
44 | });
|
45 | });
|