介绍
Webpack热服务器中间件设计为与Webpack Dev中间件(以及可选的Webpack热中间件)一起使用,以在服务器上热更新Webpack捆绑包。
为什么?
创建通用Web应用程序时,通常使用Webpack构建两个捆绑包,一个客户端捆绑包针对“web”,另一个服务器捆绑包针对“node”。
客户端包的入口点呈现到DOM
注意:服务器包本身就是中间件,允许您将其安装到现有节点服务器的任何位置,例如
考虑到这种设置,使用Webpack Dev Server或Webpack热中间件为客户端包连接热模块替换相当容易,但是这些中间软件不处理服务器包,这意味着您需要经常重新启动服务器以查看最新的更改。
Webpack热服务器中间件解决了这个问题,确保使用的服务器包始终是最新的编译,而不需要重新启动。此外,它还允许客户机和服务器捆绑包共享相同的Webpack缓存以更快地构建,并在服务器上使用内存捆绑包以避免触及磁盘。
事实证明,在服务器上,热模块替换比在客户机上要容易得多,因为您没有任何要保留的状态,因为中间件几乎总是必须是无状态的,所以只要发生更改,就可以在顶层替换整个包。
用法
const express = require('express');
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackHotMiddleware = require('webpack-hot-middleware');
const webpackHotServerMiddleware = require('webpack-hot-server-middleware');
const config = require('./webpack.config.js');
const app = express();
const compiler = webpack(config);
app.use(webpackDevMiddleware(compiler, {
serverSideRender: true
}));
// NOTE: Only the client bundle needs to be passed to `webpack-hot-middleware`.
app.use(webpackHotMiddleware(compiler.compilers.find(compiler => compiler.name === 'client')));
app.use(webpackHotServerMiddleware(compiler));
app.listen(6060);
更多信息https://www.npmjs.com/package/webpack-hot-server-middleware