我正在启动这样的webpack dev服务器(v 1.16)
let compiler = webpack(webpackConfig);
let webpackServer = new webpackDevServer(compiler);
webpackServer.listen(program.webpackPort);
我想对入口点进行更改,然后重新启动服务器.我已经看到了invalidate方法,但我见过的唯一方法是调用compiler.apply然后调用server.invalidate(),而compiler.apply似乎需要一个插件.
我也看过close方法,但这似乎不起作用.如果我关闭它没有入口点更改,它似乎正确重新启动.但是,只要我添加第一个,关闭似乎不再有任何影响(也没有控制台输出).这是我使用close方法的方法.
if(shouldRestart){
webpackConfig.entry = newEntry;
webpackServer.close(); //same reference to server as above
compiler = webpack(webpackConfig);
webpackServer = new webpackDevServer(compiler);
webpackServer.listen(program.webpackPort);
}
我稍微挖了一下close方法,因为看起来它应该做我想要的.我在新版本中看到它需要回调,所以我尝试传递它.
Server.prototype.close = function(callback) {
this.sockets.forEach(function(sock) {
sock.close();
});
this.listeningApp.close(function() {
this.middleware.close(callback);
}.bind(this));
this.sockets = [];
回调仅在我第一次调用close时调用,因此行为是相同的.
我可以通过停止开发服务器并使用新的webpackConfig启动一个新服务器,但我没有看到这样做的选项(除非那是应该关闭的).
最佳答案 因为它使用的是具有invalidate方法的
webpack-dev-middleware:
webpackServer.middleware.invalidate()