Ho una semplice configurazione con webpack-dev-middleware
e webpack-hot-middleware
che utilizza Hot reload (HMR) con reazione.Il middleware dev di Webpack reagisce a caldo ricarica troppo lento
Tutto funziona bene, tranne che ogni modifica apportata al codice richiede 2 3-4 secondi !!! fino a quando non lo vedo nel browser. Sto facendo qualcosa di sbagliato? dovrebbe essere così?
Il mio codice è piuttosto grande e il mio bundle ridotto arriva a 841kb (200kb gzip) è questa la ragione? più il codebase è più grande della creazione del bundle più lentamente?
Express Server:
var webpack = require('webpack');
var webpackConfig = require('./webpack.hot.config');
var compiler = webpack(webpackConfig);
app.use(require("webpack-dev-middleware")(compiler, {
noInfo: true,
publicPath: webpackConfig.output.publicPath,
watchOptions: {
poll: true
}
}));
app.use(require("webpack-hot-middleware")(compiler, {
log: console.log,
path: '/__webpack_hmr',
heartbeat: 10 * 1000
}));
webpack.hot.config.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
context: __dirname,
entry: [
'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000',
'./src/js/index'
],
module: {
loaders: [{
test: /\.jsx?$/,
include: path.join(__dirname, 'src/js'),
//exclude: /node_modules/,
loader: 'react-hot!babel'
},
{
// Test expects a RegExp! Note the slashes!
test: /\.css$/,
loaders: ['style', 'css'],
// Include accepts either a path or an array of paths.
include: path.join(__dirname, 'src/css')
}
]
},
resolve: {
extensions: ['', '.js', '.jsx']
},
output: {
path: __dirname + '/public',
publicPath: '/',
filename: 'js/app.js'
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
]
};
e questo è ciò che ottengo nella console quando ho cambiato qualcosa nel codice:
[HMR] App is up to date.
app.js:73223 [HMR] bundle rebuilding
app.js:73226 [HMR] bundle rebuilt in 335ms
app.js:73289 [HMR] Checking for updates on the server...
app.js:73362 [HMR] Updated modules:
app.js:73364 [HMR] - ./src/js/components/header.jsx
app.js:73369 [HMR] App is up to date.
Così il 'escludere:/node_modules /' é commentato. La build è ancora lenta quando è nella configurazione? Oltre a ciò, ti consigliamo di rimuovere OccurrenceOrderPlugin. Quel plugin ha lo scopo di aiutare con il chunking che non sembra che tu stia implementando (a meno che tu non sia in un altro file di configurazione). – garrettmaring
@garrettmaring, l'uso di 'include' al posto di' exclude' dovrebbe essere sufficiente in quanto è la variante più esplicita. In passato, penso di aver anche bisogno di usare 'OccurenceOrderPlugin' per garantire il caricamento a caldo di' webpack-dev-middleware'. –