const express = require('express'); const webpack = require('webpack'); const path = require('path'); const webpackConfig = require('../webpack.config'); const __DEV__ = process.env.NODE_ENV === 'development'; function healthEndpoint(app) { app.get('/health', (req, res) => { res.send('OK'); }); return app; } function setupDevServer(app) { if (!__DEV__) { return app; } const compiler = webpack(webpackConfig); const serverOptions = { quiet: true, publicPath: webpackConfig.output.publicPath, hot: true }; // eslint-disable-next-line global-require app.use(require('webpack-dev-middleware')(compiler, serverOptions)); // eslint-disable-next-line global-require app.use(require('webpack-hot-middleware')(compiler)); return app; } function clientRoute(app) { app.use(express.static(path.resolve(__dirname, '../static'))); return app; } function run() { const app = express(); healthEndpoint(app); setupDevServer(app); clientRoute(app); const port = process.env.PORT || 3000; app.listen(port, () => { console.log('Listening on port', port); }); } module.exports = { run };