Webpack dev server перекомпилируется, когда горячий, но пакет на самом деле не меняется - PullRequest
0 голосов
/ 04 июня 2019

Я использую веб-пакет для тестирования вывода библиотеки генерации кода, которую я пишу; Библиотека копирует файлы в новый каталог, и веб-пакет обслуживает их.

Конечный результат упакует веб-приложение в виде 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'],
            },
        ]
    },
}
...