Skonfigurowałem proxy, aby to osiągnąć:
Masz regularny serwer ekspresowy, który obsługuje plik index.html na dowolnej trasie, chyba że jest to trasa zasobów. jeśli jest to zasób, żądanie jest przesyłane przez serwer proxy do serwera WWW
Twoje punkty wejścia na gorąco będą nadal wskazywały bezpośrednio na serwer deweloperski pakietu webpack, więc ponowne ładowanie na gorąco nadal działa.
Załóżmy, że uruchamiasz webpack-dev-server na 8081, a twój serwer proxy na 8080. Twój plik server.js będzie wyglądał następująco:
"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);
teraz utwórz swoje punkty wejścia w konfiguracji webpacka w następujący sposób:
entry: [
'./src/main.js',
'webpack/hot/dev-server',
'webpack-dev-server/client?http://localhost:8081'
]
Zwróć uwagę na bezpośrednie połączenie z 8081 w celu ponownego załadowania
upewnij się również, że przekazujesz bezwzględny adres URL do output.publicPath
opcji:
output: {
publicPath: "http://localhost:8081/assets/",
// ...
}