Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80635 views
1
"use strict";
2
3
var compression = require('compression');
4
var connect = require('connect');
5
var convert = require('./convert.js');
6
var errorHandler = require('errorhandler');
7
var http = require('http');
8
var morgan = require('morgan');
9
var optimist = require('optimist');
10
var path = require('path');
11
var reactMiddleware = require('react-page-middleware');
12
var serveFavicon = require('serve-favicon');
13
var serveStatic = require('serve-static');
14
15
var argv = optimist.argv;
16
17
var PROJECT_ROOT = path.resolve(__dirname, '..');
18
var FILE_SERVE_ROOT = path.join(PROJECT_ROOT, 'src');
19
20
var port = argv.port;
21
if (argv.$0 === 'node ./server/generate.js') {
22
// Using a different port so that you can publish the website
23
// and keeping the server up at the same time.
24
port = 8079;
25
}
26
27
var buildOptions = {
28
projectRoot: PROJECT_ROOT,
29
pageRouteRoot: FILE_SERVE_ROOT,
30
useBrowserBuiltins: false,
31
logTiming: true,
32
useSourceMaps: true,
33
ignorePaths: function(p) {
34
return p.indexOf('__tests__') !== -1;
35
},
36
serverRender: true,
37
dev: argv.dev !== 'false',
38
static: true
39
};
40
41
var app = connect()
42
.use(function(req, res, next) {
43
// convert all the md files on every request. This is not optimal
44
// but fast enough that we don't really need to care right now.
45
convert();
46
next();
47
})
48
.use(reactMiddleware.provide(buildOptions))
49
.use(serveStatic(FILE_SERVE_ROOT))
50
.use(serveFavicon(path.join(FILE_SERVE_ROOT, 'elements', 'favicon', 'favicon.ico')))
51
.use(morgan('combined'))
52
.use(compression())
53
.use(errorHandler());
54
55
var portToUse = port || 8080;
56
var server = http.createServer(app);
57
server.listen(portToUse);
58
console.log('Open http://localhost:' + portToUse + '/flux/index.html');
59
module.exports = server;
60
61