Skip to content

Commit e4761bf

Browse files
authored
refactor(client): migrate client to built-in logger (#2631)
1 parent 6e9890e commit e4761bf

29 files changed

+320
-232
lines changed

bin/cli-flags.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ module.exports = {
6565
describe: 'Open default browser with the specified page',
6666
},
6767
{
68-
name: 'client-log-level',
68+
name: 'client-logging',
6969
type: String,
7070
group: DISPLAY_GROUP,
7171
defaultValue: 'info',
7272
describe:
73-
'Log level in the browser (trace, debug, info, warn, error or silent)',
73+
'Log level in the browser (none, error, warn, info, log, verbose)',
7474
},
7575
{
7676
name: 'https',

bin/options.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,12 @@ const options = {
7373
group: DISPLAY_GROUP,
7474
describe: 'Enables/Disables colors on the console',
7575
},
76-
'client-log-level': {
76+
'client-logging': {
7777
type: 'string',
7878
group: DISPLAY_GROUP,
7979
default: 'info',
8080
describe:
81-
'Log level in the browser (trace, debug, info, warn, error or silent)',
81+
'Log level in the browser (none, error, warn, info, log, verbose)',
8282
},
8383
https: {
8484
type: 'boolean',

client-src/clients/SockJSClient.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module.exports = class SockJSClient extends BaseClient {
1313
this.sock = new SockJS(url);
1414

1515
this.sock.onerror = (err) => {
16-
log.error('[WDS]', err);
16+
log.error(err);
1717
};
1818
}
1919

client-src/clients/WebsocketClient.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ module.exports = class WebsocketClient extends BaseClient {
1414
this.client = new WebSocket(url.replace(/^http/, 'ws'));
1515

1616
this.client.onerror = (err) => {
17-
log.error('[WDS]', err);
17+
log.error(err);
1818
};
1919
}
2020

client-src/default/index.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
'use strict';
22

3+
// webpack@5 doesn't inject node polyfill automatically
4+
window.global = window.global || window;
5+
window.process = window.process || {};
6+
window.process.env = window.process.env || {};
7+
38
/* global __resourceQuery WorkerGlobalScope self */
49
/* eslint prefer-destructuring: off */
510
const stripAnsi = require('strip-ansi');
@@ -37,14 +42,14 @@ if (typeof window !== 'undefined') {
3742
const onSocketMessage = {
3843
hot() {
3944
options.hot = true;
40-
log.info('[WDS] Hot Module Replacement enabled.');
45+
log.info('Hot Module Replacement enabled.');
4146
},
4247
liveReload() {
4348
options.liveReload = true;
44-
log.info('[WDS] Live Reloading enabled.');
49+
log.info('Live Reloading enabled.');
4550
},
4651
invalid() {
47-
log.info('[WDS] App updated. Recompiling...');
52+
log.info('App updated. Recompiling...');
4853
// fixes #1042. overlay doesn't clear if errors are fixed but warnings remain.
4954
if (options.useWarningOverlay || options.useErrorOverlay) {
5055
overlay.clear();
@@ -55,17 +60,20 @@ const onSocketMessage = {
5560
status.currentHash = hash;
5661
},
5762
'still-ok': function stillOk() {
58-
log.info('[WDS] Nothing changed.');
63+
log.info('Nothing changed.');
5964
if (options.useWarningOverlay || options.useErrorOverlay) {
6065
overlay.clear();
6166
}
6267
sendMessage('StillOk');
6368
},
64-
'log-level': function logLevel(level) {
69+
logging: function logging(level) {
70+
// this is needed because the HMR logger operate separately from
71+
// dev server logger
6572
const hotCtx = require.context('webpack/hot', false, /^\.\/log$/);
6673
if (hotCtx.keys().indexOf('./log') !== -1) {
6774
hotCtx('./log').setLogLevel(level);
6875
}
76+
6977
setLogLevel(level);
7078
},
7179
overlay(value) {
@@ -86,7 +94,7 @@ const onSocketMessage = {
8694
},
8795
'progress-update': function progressUpdate(data) {
8896
if (options.useProgress) {
89-
log.info(`[WDS] ${data.percent}% - ${data.msg}.`);
97+
log.info(`${data.percent}% - ${data.msg}.`);
9098
}
9199
sendMessage('Progress', data);
92100
},
@@ -101,11 +109,11 @@ const onSocketMessage = {
101109
reloadApp(options, status);
102110
},
103111
'content-changed': function contentChanged() {
104-
log.info('[WDS] Content base changed. Reloading...');
112+
log.info('Content base changed. Reloading...');
105113
self.location.reload();
106114
},
107115
warnings(warnings) {
108-
log.warn('[WDS] Warnings while compiling.');
116+
log.warn('Warnings while compiling.');
109117
const strippedWarnings = warnings.map((warning) => stripAnsi(warning));
110118
sendMessage('Warnings', strippedWarnings);
111119
for (let i = 0; i < strippedWarnings.length; i++) {
@@ -121,7 +129,7 @@ const onSocketMessage = {
121129
reloadApp(options, status);
122130
},
123131
errors(errors) {
124-
log.error('[WDS] Errors while compiling. Reload prevented.');
132+
log.error('Errors while compiling. Reload prevented.');
125133
const strippedErrors = errors.map((error) => stripAnsi(error));
126134
sendMessage('Errors', strippedErrors);
127135
for (let i = 0; i < strippedErrors.length; i++) {
@@ -136,7 +144,7 @@ const onSocketMessage = {
136144
log.error(error);
137145
},
138146
close() {
139-
log.error('[WDS] Disconnected!');
147+
log.error('Disconnected!');
140148

141149
sendMessage('Close');
142150
},

client-src/default/utils/log.js

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,19 @@
11
'use strict';
22

3-
const log = require('loglevel').getLogger('webpack-dev-server');
3+
const log = require('webpack/lib/logging/runtime');
44

5-
const INFO = 'info';
6-
const WARN = 'warn';
7-
const ERROR = 'error';
8-
const DEBUG = 'debug';
9-
const TRACE = 'trace';
10-
const SILENT = 'silent';
11-
// deprecated
12-
// TODO: remove these at major released
13-
// https://github.com/webpack/webpack-dev-server/pull/1825
14-
const WARNING = 'warning';
15-
const NONE = 'none';
16-
17-
// Set the default log level
18-
log.setDefaultLevel(INFO);
5+
const name = 'webpack-dev-server';
6+
const defaultLevel = 'info';
197

208
function setLogLevel(level) {
21-
switch (level) {
22-
case INFO:
23-
case WARN:
24-
case ERROR:
25-
case DEBUG:
26-
case TRACE:
27-
log.setLevel(level);
28-
break;
29-
// deprecated
30-
case WARNING:
31-
// loglevel's warning name is different from webpack's
32-
log.setLevel('warn');
33-
break;
34-
// deprecated
35-
case NONE:
36-
case SILENT:
37-
log.disableAll();
38-
break;
39-
default:
40-
log.error(`[WDS] Unknown clientLogLevel '${level}'`);
41-
}
9+
log.configureDefaultLogger({
10+
level,
11+
});
4212
}
4313

14+
setLogLevel(defaultLevel);
15+
4416
module.exports = {
45-
log,
17+
log: log.getLogger(name),
4618
setLogLevel,
4719
};

client-src/default/utils/reloadApp.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function reloadApp(
1212
return;
1313
}
1414
if (hot) {
15-
log.info('[WDS] App hot update...');
15+
log.info('App hot update...');
1616
const hotEmitter = require('webpack/hot/emitter');
1717
hotEmitter.emit('webpackHotUpdate', currentHash);
1818
if (typeof self !== 'undefined' && self.window) {
@@ -40,7 +40,7 @@ function reloadApp(
4040

4141
function applyReload(rootWindow, intervalId) {
4242
clearInterval(intervalId);
43-
log.info('[WDS] App updated. Reloading...');
43+
log.info('App updated. Reloading...');
4444
rootWindow.location.reload();
4545
}
4646
}

lib/Server.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -634,8 +634,12 @@ class Server {
634634
}
635635
});
636636

637-
if (this.options.clientLogLevel) {
638-
this.sockWrite([connection], 'log-level', this.options.clientLogLevel);
637+
if (this.options.clientOptions.logging) {
638+
this.sockWrite(
639+
[connection],
640+
'logging',
641+
this.options.clientOptions.logging
642+
);
639643
}
640644

641645
if (this.options.hot === true || this.options.hot === 'only') {

lib/options.json

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,6 @@
1010
"bonjour": {
1111
"type": "boolean"
1212
},
13-
"clientLogLevel": {
14-
"enum": [
15-
"info",
16-
"warn",
17-
"error",
18-
"debug",
19-
"trace",
20-
"silent",
21-
"none",
22-
"warning"
23-
]
24-
},
2513
"clientOptions": {
2614
"type": "object",
2715
"properties": {
@@ -43,6 +31,9 @@
4331
"type": "null"
4432
}
4533
]
34+
},
35+
"logging": {
36+
"enum": ["none", "error", "warn", "info", "log", "verbose"]
4637
}
4738
},
4839
"additionalProperties": false
@@ -399,7 +390,6 @@
399390
"properties": {
400391
"allowedHosts": "should be {Array} (https://webpack.js.org/configuration/dev-server/#devserverallowedhosts)",
401392
"bonjour": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devserverbonjour)",
402-
"clientLogLevel": "should be {String} and equal to one of the allowed values\n\n [ 'none', 'silent', 'info', 'debug', 'trace', 'error', 'warning', 'warn' ]\n\n (https://webpack.js.org/configuration/dev-server/#devserverclientloglevel)",
403393
"clientOptions": "should be {Object} (https://webpack.js.org/configuration/dev-server/#devserverclientoptions)",
404394
"compress": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devservercompress)",
405395
"contentBase": "should be {Number|String|Array} (https://webpack.js.org/configuration/dev-server/#devservercontentbase)",

lib/utils/createConfig.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,14 @@ function createConfig(config, argv, { port }) {
8080
options.hot = hasHotOnly ? 'only' : argv.hot;
8181
}
8282

83-
// TODO https://github.com/webpack/webpack-dev-server/issues/616 (v4)
84-
// We should prefer CLI arg under config, now we always prefer `clientLogLevel` from `devServer`
85-
if (!options.clientLogLevel && argv.clientLogLevel) {
86-
options.clientLogLevel = argv.clientLogLevel;
83+
if (argv.clientLogging) {
84+
if (options.clientOptions) {
85+
options.clientOptions.logging = argv.clientLogging;
86+
} else {
87+
options.clientOptions = {
88+
logging: argv.clientLogging,
89+
};
90+
}
8791
}
8892

8993
if (argv.contentBase) {

0 commit comments

Comments
 (0)