我開始的WebPack開發服務器(V 1.16)這樣如何以編程方式重新啓動的WebPack開發服務器(是close方法剛剛打破?)
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開始一個新的服務器,但我沒有看到這樣做的選項(除非這是關閉應該做的)。
您可以通過nodemon運行它來得到你想要的效果。 –
有沒有可以鏈接到@JuhoVepsäläinen的例子?它似乎是爲了觀看文件更新而製作的。我試圖改變內存中的配置。如果這更容易,我也不需要運行監視器。我可以按需重啓服務器。我只是不知道有什麼方法來重新啓動它 – bdwain
如果nodemon不會爲你工作(爲我工作),這裏是另一種選擇:https://gist.github.com/bebraw/a990a206d9b66b14b8e6。 –