const express = require('express'); const morgan = require('morgan'); const WebpackDevServer = require('webpack-dev-server'); const devErrorHandler = require('errorhandler'); const devAssets = require('./middleware/devAssets'); const createDevCompiler = require('./createDevCompiler'); const createRouter = require('./createRouter'); function createDevServer(publicDir, webpackConfig, devOrigin) { const compiler = createDevCompiler( webpackConfig, `webpack-dev-server/client?${devOrigin}` ); const server = new WebpackDevServer(compiler, { // webpack-dev-middleware options publicPath: webpackConfig.output.publicPath, quiet: false, noInfo: false, stats: { // https://webpack.js.org/configuration/stats/ assets: true, colors: true, version: true, hash: true, timings: true, chunks: false }, // webpack-dev-server options contentBase: false, disableHostCheck: true, before(app) { // This runs before webpack-dev-middleware app.disable('x-powered-by'); app.use(morgan('dev')); } }); // This runs after webpack-dev-middleware server.use(devErrorHandler()); if (publicDir) { server.use(express.static(publicDir)); } server.use(devAssets(compiler)); server.use(createRouter()); return server; } module.exports = createDevServer;