Подтвердить что ты не робот

Что делает ленивый режим webpack dev server?

Я запускаю свой webpack-dev-сервер с помощью

webpack-dev-server --lazy --inline --progress --colors --port 8082

Однако это показывает ошибку 404 в моем браузере, когда он пытается получить доступ к bundle.js.

Все остальное кажется прекрасным, поскольку, если я заменил --lazy на --hot, все будет работать нормально.

Что именно делает --lazy?

Обновить:

Вот файл webpack -

module.exports = {
    devtool: "source-map",
    entry: [
        'webpack/hot/only-dev-server', // "only" prevents reload on syntax errors
        "./app/main.js"
    ],
    output: {
        path: "./js",
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /\.css$/, loader: "style-loader!css-loader"},
            { test: /\.js$/,  exclude: /node_modules/, loaders: ["react-hot"] }
        ]
    }
};
4b9b3361

Ответ 1

После некоторой отладки я обнаружил, что в webpack-dev-middleware (в функции webpackDevMiddleware) есть следующий оператор if:

// in lazy mode, rebuild on bundle request
if(options.lazy && (!options.filename || options.filename.test(filename))) {
    rebuild();
}

Функция rebuild() никогда не выполняется, потому что options.filename.test(filename) aways возвращает false. И это потому, что filename имеет косую черту ("/bundle.js"). Таким образом, я изменил regex options.filename чтобы разрешить эту косую черту, и она исправила проблему.

Я сделал запрос на перенос на github: https://github.com/webpack/webpack-dev-middleware/pull/62

Ответ 2

Ленивый режим просто не перекомпилируется при каждом изменении, но ждет вместо этого следующего вызова на входную точку для проверки изменений