Горячая перезагрузка через webpack-serve с прокси (?)
У меня есть сервер, обслуживающий REST API + статический контент. Можно ли обслуживать статический контент с помощью webpack-serve и разрешать ему выполнять горячую перезагрузку, в то время как вызовы, начинающиеся с "/api", передаются в REST API?
Я попытался настроить это, используя прокси и указав каталог содержимого. Таким образом, webpack-serve будет использовать API REST, поскольку он не может соответствовать соответствующим путям API на диске. Я мог получить конечные точки API в браузере, чтобы прокси работал, но POST: использование AJAX получает 404:ed.
Я вижу в терминале, что изменения в моих исходных файлах обрабатываются, но они не распространяются ни в горячем, ни при ручном обновлении (пакет js подается как статический контент с диска, где он остается неизменным). Буду очень признателен за указатели!
Мой конфиг:
const path = require("path");
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const proxy = require("http-proxy-middleware");
const convert = require("koa-connect");
const Router = require("koa-router");
const router = new Router();
const proxyOptions = {
target: "http://localhost/",
changeOrigin: true
};
router.get("*", convert(proxy(proxyOptions)));
module.exports = {
watch: true,
mode: "development",
entry: "./internal-jsx/react-views.js",
output: {
path: path.resolve("static/scripts"),
filename: "dev.bundle.js"
},
serve: {
content: "./static",
port: 8080,
hot: {
hot: true
},
add: (app, middleware, options) => {
middleware.webpack();
middleware.content();
app.use(router.routes());
}
},
module: {
rules: [
{
enforce: "pre",
test: /\.js$/,
exclude: /node_modules/,
loader: "eslint-loader"
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: [
{
loader: "css-loader",
options: {
minimize: true,
url: false
}
}
]
})
},
{
test: /\.js$/,
exclude: /node_modules/,
use: "babel-loader"
},
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: "babel-loader"
}
]
},
plugins: [
new ExtractTextPlugin("../css/bundle.css")
]
};
1 ответ
Вы можете добавить промежуточное программное обеспечение, которое направляет запрос на сервер веб-пакетов.
Таким образом, все запросы сначала будут проходить через ваш собственный сервер. Если это вызов /api
ответь сам. Если это запрос статических ресурсов, перешлите его на сервер веб-пакетов.