index.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. const express = require('express');
  2. const webpack = require('webpack');
  3. const path = require('path');
  4. const webpackConfig = require('../webpack.config');
  5. const __DEV__ = process.env.NODE_ENV === 'development';
  6. function healthEndpoint(app) {
  7. app.get('/health', (req, res) => {
  8. res.send('OK');
  9. });
  10. return app;
  11. }
  12. function setupDevServer(app) {
  13. if (!__DEV__) {
  14. return app;
  15. }
  16. const compiler = webpack(webpackConfig);
  17. const serverOptions = {
  18. quiet: true,
  19. publicPath: webpackConfig.output.publicPath,
  20. hot: true
  21. };
  22. // eslint-disable-next-line global-require
  23. app.use(require('webpack-dev-middleware')(compiler, serverOptions));
  24. // eslint-disable-next-line global-require
  25. app.use(require('webpack-hot-middleware')(compiler));
  26. return app;
  27. }
  28. function clientRoute(app) {
  29. app.use(express.static(path.resolve(__dirname, '../static')));
  30. return app;
  31. }
  32. function run() {
  33. const app = express();
  34. healthEndpoint(app);
  35. setupDevServer(app);
  36. clientRoute(app);
  37. const port = process.env.PORT || 3000;
  38. app.listen(port, () => {
  39. console.log('Listening on port', port);
  40. });
  41. }
  42. module.exports = {
  43. run
  44. };