webpack-dev-server 2.9.3 → 2.9.7
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/bin/webpack-dev-server.js +3 -2
- package/lib/Server.js +29 -5
- package/package.json +10 -5
- package/ssl/server.pem +0 -46
|
@@ -390,8 +390,9 @@ function startDevServer(webpackOptions, options) {
|
|
|
390
390
|
|
|
391
391
|
['SIGINT', 'SIGTERM'].forEach((sig) => {
|
|
392
392
|
process.on(sig, () => {
|
|
393
|
-
server.close()
|
|
394
|
-
|
|
393
|
+
server.close(() => {
|
|
394
|
+
process.exit(); // eslint-disable-line no-process-exit
|
|
395
|
+
});
|
|
395
396
|
});
|
|
396
397
|
});
|
|
397
398
|
|
package/lib/Server.js
CHANGED
|
@@ -13,6 +13,7 @@ const del = require('del');
|
|
|
13
13
|
const express = require('express');
|
|
14
14
|
const httpProxyMiddleware = require('http-proxy-middleware');
|
|
15
15
|
const ip = require('ip');
|
|
16
|
+
const killable = require('killable');
|
|
16
17
|
const serveIndex = require('serve-index');
|
|
17
18
|
const historyApiFallback = require('connect-history-api-fallback');
|
|
18
19
|
const selfsigned = require('selfsigned');
|
|
@@ -49,6 +50,7 @@ function Server(compiler, options) {
|
|
|
49
50
|
this.allowedHosts = options.allowedHosts;
|
|
50
51
|
this.sockets = [];
|
|
51
52
|
this.contentBaseWatchers = [];
|
|
53
|
+
this.watchOptions = options.watchOptions || {};
|
|
52
54
|
|
|
53
55
|
// Listening for events
|
|
54
56
|
const invalidPlugin = () => {
|
|
@@ -322,7 +324,9 @@ function Server(compiler, options) {
|
|
|
322
324
|
},
|
|
323
325
|
|
|
324
326
|
before: () => {
|
|
325
|
-
if (typeof options.before === 'function') {
|
|
327
|
+
if (typeof options.before === 'function') {
|
|
328
|
+
options.before(app, this);
|
|
329
|
+
}
|
|
326
330
|
},
|
|
327
331
|
|
|
328
332
|
middleware: () => {
|
|
@@ -474,6 +478,8 @@ function Server(compiler, options) {
|
|
|
474
478
|
this.listeningApp = http.createServer(app);
|
|
475
479
|
}
|
|
476
480
|
|
|
481
|
+
killable(this.listeningApp);
|
|
482
|
+
|
|
477
483
|
// Proxy websockets without the initial http request
|
|
478
484
|
// https://github.com/chimurai/http-proxy-middleware#external-websocket-upgrade
|
|
479
485
|
websocketProxies.forEach(function (wsProxy) {
|
|
@@ -610,14 +616,15 @@ Server.prototype.close = function (callback) {
|
|
|
610
616
|
sock.close();
|
|
611
617
|
});
|
|
612
618
|
this.sockets = [];
|
|
613
|
-
this.listeningApp.close(() => {
|
|
614
|
-
this.middleware.close(callback);
|
|
615
|
-
});
|
|
616
619
|
|
|
617
620
|
this.contentBaseWatchers.forEach((watcher) => {
|
|
618
621
|
watcher.close();
|
|
619
622
|
});
|
|
620
623
|
this.contentBaseWatchers = [];
|
|
624
|
+
|
|
625
|
+
this.listeningApp.kill(() => {
|
|
626
|
+
this.middleware.close(callback);
|
|
627
|
+
});
|
|
621
628
|
};
|
|
622
629
|
|
|
623
630
|
Server.prototype.sockWrite = function (sockets, type, data) {
|
|
@@ -657,7 +664,24 @@ Server.prototype._sendStats = function (sockets, stats, force) {
|
|
|
657
664
|
};
|
|
658
665
|
|
|
659
666
|
Server.prototype._watch = function (watchPath) {
|
|
660
|
-
|
|
667
|
+
// duplicate the same massaging of options that watchpack performs
|
|
668
|
+
// https://github.com/webpack/watchpack/blob/master/lib/DirectoryWatcher.js#L49
|
|
669
|
+
// this isn't an elegant solution, but we'll improve it in the future
|
|
670
|
+
const usePolling = this.watchOptions.poll ? true : undefined; // eslint-disable-line no-undefined
|
|
671
|
+
const interval = typeof this.watchOptions.poll === 'number' ? this.watchOptions.poll : undefined; // eslint-disable-line no-undefined
|
|
672
|
+
const options = {
|
|
673
|
+
ignoreInitial: true,
|
|
674
|
+
persistent: true,
|
|
675
|
+
followSymlinks: false,
|
|
676
|
+
depth: 0,
|
|
677
|
+
atomic: false,
|
|
678
|
+
alwaysStat: true,
|
|
679
|
+
ignorePermissionErrors: true,
|
|
680
|
+
ignored: this.watchOptions.ignored,
|
|
681
|
+
usePolling,
|
|
682
|
+
interval
|
|
683
|
+
};
|
|
684
|
+
const watcher = chokidar.watch(watchPath, options).on('change', () => {
|
|
661
685
|
this.sockWrite(this.sockets, 'content-changed');
|
|
662
686
|
});
|
|
663
687
|
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webpack-dev-server",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.7",
|
|
4
4
|
"description": "Serves a webpack app. Updates the browser on changes.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "webpack/webpack-dev-server",
|
|
7
7
|
"author": "Tobias Koppers @sokra",
|
|
8
|
-
"homepage": "
|
|
8
|
+
"homepage": "https://github.com/webpack/webpack-dev-server",
|
|
9
9
|
"maintainers": [
|
|
10
10
|
{
|
|
11
11
|
"name": "Andrew Powell",
|
|
@@ -24,11 +24,12 @@
|
|
|
24
24
|
"cover": "istanbul cover node_modules/mocha/bin/_mocha",
|
|
25
25
|
"lint": "eslint bin lib test examples client/{index,live,socket,sockjs,overlay,webpack.config}.js",
|
|
26
26
|
"mocha": "mocha --full-trace --check-leaks",
|
|
27
|
-
"prepublish": "npm run -s build:live && npm run -s build:index && npm run -s build:sockjs",
|
|
27
|
+
"prepublish": "(rm ssl/*.pem || true) && npm run -s build:live && npm run -s build:index && npm run -s build:sockjs",
|
|
28
28
|
"test": "npm run lint && npm run mocha",
|
|
29
29
|
"build:live": "webpack ./client/live.js client/live.bundle.js --color --config client/webpack.config.js",
|
|
30
30
|
"build:index": "webpack ./client/index.js client/index.bundle.js --color --config client/webpack.config.js",
|
|
31
|
-
"build:sockjs": "webpack ./client/sockjs.js client/sockjs.bundle.js --color --config client/webpack.sockjs.config.js"
|
|
31
|
+
"build:sockjs": "webpack ./client/sockjs.js client/sockjs.bundle.js --color --config client/webpack.sockjs.config.js",
|
|
32
|
+
"webpack-dev-server": "cd $INIT_CWD && node ../../../bin/webpack-dev-server.js"
|
|
32
33
|
},
|
|
33
34
|
"files": [
|
|
34
35
|
"lib/",
|
|
@@ -48,12 +49,13 @@
|
|
|
48
49
|
"connect-history-api-fallback": "^1.3.0",
|
|
49
50
|
"debug": "^3.1.0",
|
|
50
51
|
"del": "^3.0.0",
|
|
51
|
-
"express": "^4.
|
|
52
|
+
"express": "^4.16.2",
|
|
52
53
|
"html-entities": "^1.2.0",
|
|
53
54
|
"http-proxy-middleware": "~0.17.4",
|
|
54
55
|
"import-local": "^0.1.1",
|
|
55
56
|
"internal-ip": "1.2.0",
|
|
56
57
|
"ip": "^1.1.5",
|
|
58
|
+
"killable": "^1.0.0",
|
|
57
59
|
"loglevel": "^1.4.1",
|
|
58
60
|
"opn": "^5.1.0",
|
|
59
61
|
"portfinder": "^1.0.9",
|
|
@@ -73,11 +75,14 @@
|
|
|
73
75
|
"eslint": "^4.5.0",
|
|
74
76
|
"eslint-config-webpack": "^1.2.5",
|
|
75
77
|
"eslint-plugin-import": "^2.7.0",
|
|
78
|
+
"execa": "^0.8.0",
|
|
76
79
|
"file-loader": "^0.11.2",
|
|
80
|
+
"html-webpack-plugin": "^2.30.1",
|
|
77
81
|
"istanbul": "^0.4.5",
|
|
78
82
|
"jquery": "^3.2.1",
|
|
79
83
|
"less": "^2.5.1",
|
|
80
84
|
"less-loader": "^4.0.5",
|
|
85
|
+
"marked": "^0.3.6",
|
|
81
86
|
"mocha": "^3.0.2",
|
|
82
87
|
"mocha-sinon": "^2.0.0",
|
|
83
88
|
"pug": "^2.0.0-beta5",
|
package/ssl/server.pem
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
-
MIIEowIBAAKCAQEAtoS4CpKBMmqAuoOv0P+RNWctGnwjxLmB/LSNy4rGHiF+f+t/
|
|
3
|
-
qr5OWSeZbns/Qn6XMRaC4PaZkE0Y8Gpp8ZzbQPSaOaTeK8N8ZvnfwEcjJApOgW/k
|
|
4
|
-
ZJwBx6GfqeRy6ecXpMWZjkiKLT+cz0g9wZDFQBWEOzOjWTk9Oy8ptF9babi2Rbd9
|
|
5
|
-
WGFMGEVZI8OI4grP/KDHs0xu20fkeefnJ6CIPjVdmcCF3JhF5Cbh856RID8MunST
|
|
6
|
-
lArTY9kWWCtTyI4PFik3xUrTZ48CFduwb+xOYrBysQJcrZxZlbHMfMrIdVdmGhz9
|
|
7
|
-
WM8OdgfcT3tsqnSS5HyISpt1YtGFcG7HQAF1fwIDAQABAoIBACPyx/ztFh1D9M7H
|
|
8
|
-
mR1k+Mi35Z5NzQ22K/AF79ejIZpVpoCzdZW/ndbZgdLM24zROh4k/OoqJ9zQEpVn
|
|
9
|
-
oC5CYrzMcIPiARBFlH8DwBoy6Kz0irnbu/RE9eTH5JaltCx1o6aEdNYdW3nGCbCZ
|
|
10
|
-
3e/9/5u7oSu34/hy2aiKhYBNN8f+j23Sm8DIm8p8Gf42t5JjIuIlI15CUklYilPr
|
|
11
|
-
Ygja3xzMWyuFhhkTANDjsCRqaFHr8OEELTPZ9c2LyvIsXeclOo9j11CgHTBIkEPv
|
|
12
|
-
I5HSpbm8lFu4LqZhFMewsCXE2IiuxVMsVez7qlSwZUECz2OoY0A/jLZZEEvNTu2O
|
|
13
|
-
PI+F1kECgYEA+v/ZhV3YHQZejDcREnRa/4Ps52y19kzFjoe3sOssCrhCKMeG+CL0
|
|
14
|
-
c13K6ig9N8e4miMUUK0OptzCQEy2dPwWlbAHTxMeQ3m686EaVnDPcnguyzvdOUEJ
|
|
15
|
-
R8Z7LUyLfF9EflwHxpUNcPM+MGgUMdmKlT3xLPEJ6WGu+pQEGIeEjYcCgYEAuiea
|
|
16
|
-
B8cLCWfl6xqJQSz6hMO/vuO1UdmURVtYyld9I1SyPDOMvUWi/dds2ExSQvfQ4jDH
|
|
17
|
-
0rpq905+q5BZV0/GsROpCOUdnLGAlvloboYrOhLrXD8H5dAPegjbja/e3WPAmXvj
|
|
18
|
-
X1sWbu/QN6gYmup2gc2E/cgKeUPmRr0O2t94lkkCgYBwhK87ZSVTZZ6O1sS1dCmy
|
|
19
|
-
764M1KQBpMrPKTIEgng82fr2kvODWxAgg4RKUf2XetXbayxZOiseTEpcTsdgS/3H
|
|
20
|
-
3qB4J0bi0rgnLSpEY8/rLcs0WkLCvs/tOCHR3cWN3Js01ga6U+kxoClZw96Btla0
|
|
21
|
-
ro7mKavazmqFdEMdx+p5EwKBgAVdmNn6ib3mqcDiDey8ACiNf9xfsd0/GT/6hw+l
|
|
22
|
-
/+xhx5Vmovrdo/oPGIsPgBuACxxJ7aiMSQMB1zLYwUp7+S0ndOrVt8nJb/xqCfGN
|
|
23
|
-
mnddDj2lb3PXUGrjEHkABbt54ZZK9N3NwVLHRMgl5zen5GyPYPLzriGarGuDjYcP
|
|
24
|
-
g+lJAoGBAJwxpSW/R5NPMYT3tu9SFJMmAy7noMW5AA4GGE8lhvRAYOWOsZXAek4c
|
|
25
|
-
n+8IFJCOe+gwGyqWw6CqOuM+3siAFT4gkA+AKTp/CRBK251dHXdFsGw13xuWXS3O
|
|
26
|
-
gG0VbpK/3Z/Ma/+HWygSzJwigIKWgzJLPUiI0Rx1Vd7sTyftK2ur
|
|
27
|
-
-----END RSA PRIVATE KEY-----
|
|
28
|
-
-----BEGIN CERTIFICATE-----
|
|
29
|
-
MIIDJjCCAg6gAwIBAgIJcBBuut3aIvmUMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
|
|
30
|
-
BAMTCWxvY2FsaG9zdDAeFw0xNzEwMDEyMTU3MjNaFw0xNzEwMzEyMTU3MjNaMBQx
|
|
31
|
-
EjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
|
32
|
-
ggEBALaEuAqSgTJqgLqDr9D/kTVnLRp8I8S5gfy0jcuKxh4hfn/rf6q+TlknmW57
|
|
33
|
-
P0J+lzEWguD2mZBNGPBqafGc20D0mjmk3ivDfGb538BHIyQKToFv5GScAcehn6nk
|
|
34
|
-
cunnF6TFmY5Iii0/nM9IPcGQxUAVhDszo1k5PTsvKbRfW2m4tkW3fVhhTBhFWSPD
|
|
35
|
-
iOIKz/ygx7NMbttH5Hnn5yegiD41XZnAhdyYReQm4fOekSA/DLp0k5QK02PZFlgr
|
|
36
|
-
U8iODxYpN8VK02ePAhXbsG/sTmKwcrECXK2cWZWxzHzKyHVXZhoc/VjPDnYH3E97
|
|
37
|
-
bKp0kuR8iEqbdWLRhXBux0ABdX8CAwEAAaN7MHkwDAYDVR0TBAUwAwEB/zALBgNV
|
|
38
|
-
HQ8EBAMCAvQwXAYDVR0RBFUwU4IJbG9jYWxob3N0ghVsb2NhbGhvc3QubG9jYWxk
|
|
39
|
-
b21haW6CBmx2aC5tZYIIKi5sdmgubWWCBVs6OjFdhwR/AAABhxD+gAAAAAAAAAAA
|
|
40
|
-
AAAAAAABMA0GCSqGSIb3DQEBCwUAA4IBAQABcNBUVzSJXbNGZ4mR8jDX+098nI6n
|
|
41
|
-
noEyQ/kcMRLqP7X2eXS9ks4jcNrFztpKxSheEqU5rB7AVDaerNiOKMlkw9NYKmer
|
|
42
|
-
RmlY3SpqtN2h1lJLX1dXRmfUaKwLm+hRGLOjrPPQyFihauzf2t6CeYBZFToqLv0M
|
|
43
|
-
BSsvNrrEHJCzM37kcfu7e4fKHPF+hzaxx8acOk7dD2FffgeGzsir0V1mTpoRq6St
|
|
44
|
-
LHwOvslK82P3OyDRCWfE6R+YwIz8x2IPFvrRdglZyFfWDKpqDZOf6TKm11dGmulI
|
|
45
|
-
5VnO4SHNk52113QMybBn8ReiKYE+mIUkQ0G7uVyCj5+lGKP6NvP83Nsx
|
|
46
|
-
-----END CERTIFICATE-----
|