webpack-dev-server 2.2.1 → 2.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/bin/webpack-dev-server.js +21 -32
- package/client/index.bundle.js +1 -3
- package/client/index.js +29 -2
- package/client/live.bundle.js +3 -6
- package/client/overlay.js +126 -0
- package/client/sockjs.bundle.js +1 -2
- package/lib/OptionsValidationError.js +107 -101
- package/lib/Server.js +74 -54
- package/lib/optionsSchema.json +27 -1
- package/lib/util/addDevServerEntrypoints.js +26 -0
- package/lib/util/createDomain.js +13 -0
- package/package.json +12 -8
package/client/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
var url = require("url");
|
|
3
3
|
var stripAnsi = require("strip-ansi");
|
|
4
4
|
var socket = require("./socket");
|
|
5
|
+
var overlay = require("./overlay");
|
|
5
6
|
|
|
6
7
|
function getCurrentScriptSource() {
|
|
7
8
|
// `document.currentScript` is the most accurate way to find the current script,
|
|
@@ -32,6 +33,8 @@ var hot = false;
|
|
|
32
33
|
var initial = true;
|
|
33
34
|
var currentHash = "";
|
|
34
35
|
var logLevel = "info";
|
|
36
|
+
var useWarningOverlay = false;
|
|
37
|
+
var useErrorOverlay = false;
|
|
35
38
|
|
|
36
39
|
function log(level, msg) {
|
|
37
40
|
if(logLevel === "info" && level === "info")
|
|
@@ -44,7 +47,7 @@ function log(level, msg) {
|
|
|
44
47
|
|
|
45
48
|
// Send messages to the outside, so plugins can consume it.
|
|
46
49
|
function sendMsg(type, data) {
|
|
47
|
-
if(typeof self !== "undefined") {
|
|
50
|
+
if(typeof self !== "undefined" && self.window) {
|
|
48
51
|
self.postMessage({
|
|
49
52
|
type: "webpack" + type,
|
|
50
53
|
data: data
|
|
@@ -66,13 +69,26 @@ var onSocketMsg = {
|
|
|
66
69
|
},
|
|
67
70
|
"still-ok": function() {
|
|
68
71
|
log("info", "[WDS] Nothing changed.")
|
|
72
|
+
if(useWarningOverlay || useErrorOverlay) overlay.clear();
|
|
69
73
|
sendMsg("StillOk");
|
|
70
74
|
},
|
|
71
75
|
"log-level": function(level) {
|
|
72
76
|
logLevel = level;
|
|
73
77
|
},
|
|
78
|
+
"overlay": function(overlay) {
|
|
79
|
+
if(typeof document !== "undefined") {
|
|
80
|
+
if(typeof(overlay) === "boolean") {
|
|
81
|
+
useWarningOverlay = overlay;
|
|
82
|
+
useErrorOverlay = overlay;
|
|
83
|
+
} else if(overlay) {
|
|
84
|
+
useWarningOverlay = overlay.warnings;
|
|
85
|
+
useErrorOverlay = overlay.errors;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
74
89
|
ok: function() {
|
|
75
90
|
sendMsg("Ok");
|
|
91
|
+
if(useWarningOverlay || useErrorOverlay) overlay.clear();
|
|
76
92
|
if(initial) return initial = false;
|
|
77
93
|
reloadApp();
|
|
78
94
|
},
|
|
@@ -88,6 +104,8 @@ var onSocketMsg = {
|
|
|
88
104
|
sendMsg("Warnings", strippedWarnings);
|
|
89
105
|
for(var i = 0; i < strippedWarnings.length; i++)
|
|
90
106
|
console.warn(strippedWarnings[i]);
|
|
107
|
+
if(useWarningOverlay) overlay.showMessage(warnings);
|
|
108
|
+
|
|
91
109
|
if(initial) return initial = false;
|
|
92
110
|
reloadApp();
|
|
93
111
|
},
|
|
@@ -99,6 +117,7 @@ var onSocketMsg = {
|
|
|
99
117
|
sendMsg("Errors", strippedErrors);
|
|
100
118
|
for(var i = 0; i < strippedErrors.length; i++)
|
|
101
119
|
console.error(strippedErrors[i]);
|
|
120
|
+
if(useErrorOverlay) overlay.showMessage(errors);
|
|
102
121
|
},
|
|
103
122
|
close: function() {
|
|
104
123
|
log("error", "[WDS] Disconnected!");
|
|
@@ -138,12 +157,20 @@ var socketUrl = url.format({
|
|
|
138
157
|
|
|
139
158
|
socket(socketUrl, onSocketMsg);
|
|
140
159
|
|
|
160
|
+
var isUnloading = false;
|
|
161
|
+
self.addEventListener("beforeunload", function() {
|
|
162
|
+
isUnloading = true;
|
|
163
|
+
});
|
|
164
|
+
|
|
141
165
|
function reloadApp() {
|
|
166
|
+
if(isUnloading) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
142
169
|
if(hot) {
|
|
143
170
|
log("info", "[WDS] App hot update...");
|
|
144
171
|
var hotEmitter = require("webpack/hot/emitter");
|
|
145
172
|
hotEmitter.emit("webpackHotUpdate", currentHash);
|
|
146
|
-
if(typeof self !== "undefined") {
|
|
173
|
+
if(typeof self !== "undefined" && self.window) {
|
|
147
174
|
// broadcast update to window
|
|
148
175
|
self.postMessage("webpackHotUpdate" + currentHash, "*");
|
|
149
176
|
}
|