Я использую веб-пакет для тестирования вывода библиотеки генерации кода, которую я пишу; Библиотека копирует файлы в новый каталог, и веб-пакет обслуживает их.
Конечный результат упакует веб-приложение в виде jar-файла Java, внедренного в сервер, внешний интерфейс выберет контент, который должен отображаться, и вставит его в iframe. Я пытаюсь смоделировать это, где я отображаю demo.html, который содержит iframe, который загружает sheet.html
, который загружает app.bundle.js
.
Когда сервер разработки работает, и я изменяю некоторые файлы и повторно вызываю библиотеку, обновленные файлы перемещаются на место, и в консоли я вижу, что webpack выполняет перекомпиляцию.
Однако, когда я смотрю на скомпилированный пакет, он фактически не изменяется, хотя исходные файлы, из которых получен пакет, отличаются. Я должен перезапустить сервер, чтобы пакет действительно обновился.
const path = require("path");
module.exports = {
"mode": "development",
"entry": "./src/main/resources/scripts/app.js",
"output" : {
path: path.resolve(__dirname, "src/main/resources/scripts/"),
filename: "app.bundle.js",
publicPath: "/src/main/resources"
},
devServer:{
before: function(app, server){
app.use("/templates/sheet.html", function(req, res) {
const resourcePath = path.resolve(__dirname + "/src/main/resources" + req.baseUrl);
res.sendFile(resourcePath);
});
app.use(/\/scripts\/.*/, function(req, res) {
const resourcePath = path.resolve(__dirname + "/src/main/resources" + req.baseUrl);
res.sendFile(resourcePath);
});
},
contentBase: __dirname,
port: 9999,
hot: true,
index: "demo.html",
historyApiFallback: {
index: "demo.html",
}
},
"module": {
"rules": [
{
"test": /\.(js|jsx)$/,
"exclude": /node_modules/,
"use": {
"loader": "babel-loader",
"options": {
"presets": [
"@babel/env",
"@babel/react"
]
}
}
},
{
test: /\.css$/i,
use: ['style-loader', 'css-loader'],
},
]
},
}