Tôi thiết lập một proxy để đạt được điều này:
Bạn có một máy chủ web cấp tốc thông thường phục vụ index.html trên bất kỳ tuyến nào, ngoại trừ nếu đó là tuyến tài sản. nếu đó là một tài sản, yêu cầu sẽ được ủy quyền cho máy chủ web-dev
các điểm truy cập nóng phản ứng của bạn vẫn sẽ trỏ trực tiếp vào máy chủ phát triển webpack, vì vậy tải lại nóng vẫn hoạt động.
Giả sử bạn chạy webpack-dev-server trên 8081 và proxy của bạn ở 8080. Tệp server.js của bạn sẽ trông như thế này:
"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);
bây giờ làm cho điểm truy cập của bạn trong cấu hình webpack như vậy:
entry: [
'./src/main.js',
'webpack/hot/dev-server',
'webpack-dev-server/client?http://localhost:8081'
]
lưu ý cuộc gọi trực tiếp tới 8081 để tải hotrel
cũng đảm bảo bạn chuyển một url tuyệt đối cho output.publicPath
tùy chọn:
output: {
publicPath: "http://localhost:8081/assets/",
// ...
}