/* eslint no-console: 0 */ const express = require('express'); const path = require('path'); const env = process.env.NODE_ENV || 'development'; const port = process.env.PORT || 3000; const app = require('./server_base'); if (env !== 'production') { const webpack = require('webpack'); const webpackMiddleware = require('webpack-dev-middleware'); const hotMiddleware = require('webpack-hot-middleware'); const config = require('./webpack.config.js'); const compiler = webpack(config); app.use(hotMiddleware(compiler)); const middleware = webpackMiddleware(compiler, { stats: { publicPath: config.output.publicPath, hot: true, inline: true, colors: true, stats: { colors: true }, historyApiFallback: true, }}); app.use(middleware); app.get('*', function response(req, res) { res.write(middleware.fileSystem.readFileSync(path.join(__dirname, 'dist/index.html'))); res.end(); }); // Reload server-side code without affecting Webpack const chokidar = require('chokidar'); const watcher = chokidar.watch('./backend'); watcher.on('ready', function() { watcher.on('all', function() { console.log("Reload /api server..."); Object.keys(require.cache).forEach(function(id) { if (/\/backend\//.test(id)) delete require.cache[id]; }); }); }); } else { app.use('/static', express.static(__dirname + '/dist')); app.get('*', function response(req, res) { res.sendFile(path.join(__dirname, 'dist/index.html')); }); } app.listen(port, '0.0.0.0', function onStart(err) { if (err) { console.log(err); } console.info('==> 🌎 Listening on port %s. Open up http://0.0.0.0:%s/ in your browser.', port, port); });