import express from 'express'; import webpack, {Configuration} from 'webpack'; import middleware from 'webpack-dev-middleware'; import hotMiddleware from 'webpack-hot-middleware'; import {rootPath, runPath, evalJs, readConfigSync} from './lib'; process.env.NODE_ENV = process.env.NODE_ENV || 'production'; const {NODE_ENV} = process.env; const config = readConfigSync(); export default function server(mode = NODE_ENV) { const app = express(); if(mode === 'development'){ const webpackOptions = evalJs(rootPath('./webpack.config.js')) as Configuration; const compiler = webpack(webpackOptions); app.use(middleware(compiler, { publicPath: webpackOptions && webpackOptions.output && webpackOptions.output.publicPath || '/' })); app.use(hotMiddleware(compiler, { log: console.log, path: '/__webpack_hmr', heartbeat: 10 * 1000 })); (config.static || []).forEach((staticPath) => { app.use(express.static(runPath(staticPath))); }) } else { app.use(express.static(runPath('static'))); } return app; }