-
Notifications
You must be signed in to change notification settings - Fork 7
/
development_server.js
96 lines (80 loc) · 2.44 KB
/
development_server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/* eslint-disable no-console */
let gaze = require( 'gaze' ),
ecstatic = require( 'ecstatic' ),
colors = require( 'colors/safe' ),
express = require( 'express' ),
app = express(),
url = require( 'url' ),
proxy = require( 'express-http-proxy' );
let isDevelopment = process.argv[ 2 ] === 'develop';
let buildData = require( './build_data' )( isDevelopment ),
buildSrc = require( './build_src' )( isDevelopment ),
buildCSS = require( './build_css' )( isDevelopment );
buildData()
.then(function () {
return buildSrc();
});
buildCSS();
if ( isDevelopment ) {
gaze( [ 'css/**/*.css' ], ( err, watcher ) => {
watcher.on( 'all', () => {
buildCSS();
} );
} );
gaze(
[
'data/**/*.{js,json}',
'data/core.yaml',
// ignore the output files of `buildData`
'!data/presets/categories.json',
'!data/presets/fields.json',
'!data/presets/presets.json',
'!data/presets.yaml',
'!data/taginfo.json',
'!dist/locales/en.json'
],
( err, watcher ) => {
watcher.on( 'all', () => {
buildData()
.then( () => {
// need to recompute js files when data changes
buildSrc();
} );
} );
}
);
gaze( [ 'modules/**/*.js' ], ( err, watcher ) => {
watcher.on( 'all', () => {
buildSrc();
} );
} );
gaze( [ 'css/hoot/**/*.scss' ], ( err, watcher ) => {
watcher.on( 'all', () => {
buildSrc();
} );
} );
let port = 8088,
hootHost = 'localhost',
hootPort = 8999,
hootUrl = 'http://' + hootHost + ':' + hootPort;
app.use(
ecstatic( { root: __dirname, cache: 0 } )
).listen( port );
app.get( '/hootenanny-id', ( req, res ) => {
res.writeHead( 301,
{ Location: 'http://localhost:3000' }
);
res.end();
} );
app.use( '/hoot-services', proxy( hootUrl, {
forwardPath: req => {
return '/hoot-services' + url.parse( req.url ).path;
}
} ) );
app.use( '/static', proxy( hootUrl, {
forwardPath: req => {
return '/static' + url.parse( req.url ).path;
}
} ) );
console.log( colors.yellow( 'Listening on ' + port ) );
}