webpack - 如何以编程方式重新启动 webpack 开发服务器(关闭方法是否刚刚被破坏?)

标签 webpack

我正在启动这样的 webpack 开发服务器(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 似乎不再有任何效果(也没有控制台输出)。下面是我如何使用 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 启动一个新服务器就可以了,但我没有看到这样做的选项(除非这是 close 应该做的)。

Here's a gist for more detail

最佳答案

因为它正在使用 webpack-dev-middleware其中有 invalidate 方法:

webpackServer.middleware.invalidate()

关于webpack - 如何以编程方式重新启动 webpack 开发服务器(关闭方法是否刚刚被破坏?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41324064/

相关文章:

Angular2、Angular-cli、Webpack - 图像 Assets 未在 github 上加载 :pages after prod deploy

webpack - Aurelia、webpack 和对图像的动态引用

javascript - 使用 Webpack 加载时,随机文本会填充到 CSS 选择器?

reactjs - 使用 React 和 Webpack 删除未使用的 css

node.js - 在 Karma 中设置 NODE_ENV 以运行 webpack 的正确方法是什么?

javascript - react : Make components external

vue.js - 如何在vue-cli生成的vue.config.js中设置mini-css-extract-plugin的配置

javascript - Webpack 同构/通用插件如何工作?

javascript - Webpack 监视文件更改并触发其他文件的加载程序

javascript - Webpack + React : Webpack builds from my node_modules folder in correct order in one place, 以及其他地方的错误顺序