Configuré un proxy para lograr esto:
Tiene un servidor web expreso regular que sirve el index.html en cualquier ruta, excepto si es una ruta de activos. si es un activo, la solicitud se envía al servidor web-dev-server
sus puntos de entrada de react hot seguirán apuntando directamente al servidor de desarrollo webpack, por lo que la recarga en caliente aún funciona.
Supongamos que ejecuta webpack-dev-server en 8081 y su proxy en 8080. Su archivo server.js se verá así:
"use strict";
var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./make-webpack-config')('dev');
var express = require('express');
var proxy = require('proxy-middleware');
var url = require('url');
## --------your proxy----------------------
var app = express();
## proxy the request for static assets
app.use('/assets', proxy(url.parse('http://localhost:8081/assets')));
app.get('/*', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
# -----your-webpack-dev-server------------------
var server = new WebpackDevServer(webpack(config), {
contentBase: __dirname,
hot: true,
quiet: false,
noInfo: false,
publicPath: "/assets/",
stats: { colors: true }
});
## run the two servers
server.listen(8081, "localhost", function() {});
app.listen(8080);
ahora haga sus puntos de entrada en la configuración del paquete web así:
entry: [
'./src/main.js',
'webpack/hot/dev-server',
'webpack-dev-server/client?http://localhost:8081'
]
tenga en cuenta la llamada directa al 8081 para hotreload
también asegúrese de pasar una URL absoluta a la output.publicPath
opción:
output: {
publicPath: "http://localhost:8081/assets/",
// ...
}