scratch-www/dev-server/index.js
2024-01-18 09:20:10 -08:00

43 lines
1.2 KiB
JavaScript

const express = require('express');
const proxy = require('express-http-proxy');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpack = require('webpack');
const compiler = webpack(require('../webpack.config.js'));
const handler = require('./handler');
const log = require('./log');
const routes = require('../src/routes.json').concat(require('../src/routes-dev.json'))
.filter(route => !process.env.VIEW || process.env.VIEW === route.view);
// Create server
const app = express();
app.disable('x-powered-by');
// Server setup
app.use(log());
// Bind routes
routes.forEach(route => {
app.get(route.pattern, handler(route));
});
const middlewareOptions = {};
app.use(webpackDevMiddleware(compiler, middlewareOptions));
const proxyHost = process.env.FALLBACK || '';
if (proxyHost !== '') {
// Fall back to scratchr2 in development
// This proxy middleware must come last
app.use('/', proxy(proxyHost));
}
// Start listening
const port = process.env.PORT || 8333;
app.listen(port, () => {
process.stdout.write(`Server listening on port ${port}\n`);
if (proxyHost) {
process.stdout.write(`Proxy host: ${proxyHost}\n`);
}
});