Skip to content

Commit b6af4e9

Browse files
committed
feat: migrate to built-in logger
1 parent 308ee21 commit b6af4e9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+632
-1194
lines changed

bin/options.js

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,12 @@ const options = {
7474
default: true,
7575
describe: 'Info',
7676
},
77-
quiet: {
78-
type: 'boolean',
79-
group: DISPLAY_GROUP,
80-
describe: 'Quiet',
81-
},
8277
'client-log-level': {
8378
type: 'string',
8479
group: DISPLAY_GROUP,
8580
default: 'info',
8681
describe:
87-
'Log level in the browser (trace, debug, info, warn, error or silent)',
82+
'Log level in the browser (none, error, warn, info, log, verbose)',
8883
},
8984
https: {
9085
type: 'boolean',

bin/webpack-dev-server.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
'use strict';
44

5-
/* eslint-disable no-shadow, no-console */
5+
/* eslint-disable no-shadow */
66

77
const fs = require('fs');
88
const net = require('net');
@@ -19,6 +19,7 @@ const getVersions = require('../lib/utils/getVersions');
1919
const options = require('./options');
2020

2121
let server;
22+
const log = createLogger(null);
2223
const serverData = {
2324
server: null,
2425
};
@@ -38,12 +39,12 @@ if (importLocal(__filename)) {
3839
try {
3940
require.resolve('webpack-cli');
4041
} catch (err) {
41-
console.error('The CLI moved into a separate package: webpack-cli');
42-
console.error(
42+
log.error('The CLI moved into a separate package: webpack-cli');
43+
log.error(
4344
"Please install 'webpack-cli' in addition to webpack itself to use the CLI"
4445
);
45-
console.error('-> When using npm: npm i -D webpack-cli');
46-
console.error('-> When using yarn: yarn add -D webpack-cli');
46+
log.error('-> When using npm: npm i -D webpack-cli');
47+
log.error('-> When using yarn: yarn add -D webpack-cli');
4748

4849
process.exitCode = 1;
4950
}
@@ -86,8 +87,6 @@ const config = require(convertArgvPath)(yargs, argv, {
8687
});
8788

8889
function startDevServer(config, options) {
89-
const log = createLogger(options);
90-
9190
let compiler;
9291

9392
try {
@@ -103,7 +102,7 @@ function startDevServer(config, options) {
103102
}
104103

105104
try {
106-
server = new Server(compiler, options, log);
105+
server = new Server(compiler, options);
107106
serverData.server = server;
108107
} catch (err) {
109108
if (err.name === 'ValidationError') {

client-src/default/index.js

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

3+
// webpack@5 doesn't inject node polyfill automatically
4+
// this is for tapable
5+
// window.process = require('process/browser');
6+
// require('util/util');
7+
38
/* global __resourceQuery WorkerGlobalScope self */
49
/* eslint prefer-destructuring: off */
510
const stripAnsi = require('strip-ansi');
611
const socket = require('./socket');
712
const overlay = require('./overlay');
8-
const { log, setLogLevel } = require('./utils/log');
13+
const createLogger = require('./utils/createLogger');
914
const sendMessage = require('./utils/sendMessage');
1015
const reloadApp = require('./utils/reloadApp');
1116
const createSocketUrl = require('./utils/createSocketUrl');
@@ -24,6 +29,7 @@ const options = {
2429
useProgress: false,
2530
};
2631
const socketUrl = createSocketUrl(__resourceQuery);
32+
let log = createLogger(null);
2733

2834
self.addEventListener('beforeunload', () => {
2935
status.isUnloading = true;
@@ -37,14 +43,14 @@ if (typeof window !== 'undefined') {
3743
const onSocketMessage = {
3844
hot() {
3945
options.hot = true;
40-
log.info('[WDS] Hot Module Replacement enabled.');
46+
log.info('Hot Module Replacement enabled.');
4147
},
4248
liveReload() {
4349
options.liveReload = true;
44-
log.info('[WDS] Live Reloading enabled.');
50+
log.info('Live Reloading enabled.');
4551
},
4652
invalid() {
47-
log.info('[WDS] App updated. Recompiling...');
53+
log.info('App updated. Recompiling...');
4854
// fixes #1042. overlay doesn't clear if errors are fixed but warnings remain.
4955
if (options.useWarningOverlay || options.useErrorOverlay) {
5056
overlay.clear();
@@ -55,18 +61,14 @@ const onSocketMessage = {
5561
status.currentHash = hash;
5662
},
5763
'still-ok': function stillOk() {
58-
log.info('[WDS] Nothing changed.');
64+
log.info('Nothing changed.');
5965
if (options.useWarningOverlay || options.useErrorOverlay) {
6066
overlay.clear();
6167
}
6268
sendMessage('StillOk');
6369
},
6470
'log-level': function logLevel(level) {
65-
const hotCtx = require.context('webpack/hot', false, /^\.\/log$/);
66-
if (hotCtx.keys().indexOf('./log') !== -1) {
67-
hotCtx('./log').setLogLevel(level);
68-
}
69-
setLogLevel(level);
71+
log = createLogger(level);
7072
},
7173
overlay(value) {
7274
if (typeof document !== 'undefined') {
@@ -86,7 +88,7 @@ const onSocketMessage = {
8688
},
8789
'progress-update': function progressUpdate(data) {
8890
if (options.useProgress) {
89-
log.info(`[WDS] ${data.percent}% - ${data.msg}.`);
91+
log.info(`${data.percent}% - ${data.msg}.`);
9092
}
9193
sendMessage('Progress', data);
9294
},
@@ -98,14 +100,14 @@ const onSocketMessage = {
98100
if (options.initial) {
99101
return (options.initial = false);
100102
} // eslint-disable-line no-return-assign
101-
reloadApp(options, status);
103+
reloadApp(options, status, log);
102104
},
103105
'content-changed': function contentChanged() {
104-
log.info('[WDS] Content base changed. Reloading...');
106+
log.info('Content base changed. Reloading...');
105107
self.location.reload();
106108
},
107109
warnings(warnings) {
108-
log.warn('[WDS] Warnings while compiling.');
110+
log.warn('Warnings while compiling.');
109111
const strippedWarnings = warnings.map((warning) => stripAnsi(warning));
110112
sendMessage('Warnings', strippedWarnings);
111113
for (let i = 0; i < strippedWarnings.length; i++) {
@@ -118,10 +120,10 @@ const onSocketMessage = {
118120
if (options.initial) {
119121
return (options.initial = false);
120122
} // eslint-disable-line no-return-assign
121-
reloadApp(options, status);
123+
reloadApp(options, status, log);
122124
},
123125
errors(errors) {
124-
log.error('[WDS] Errors while compiling. Reload prevented.');
126+
log.error('Errors while compiling. Reload prevented.');
125127
const strippedErrors = errors.map((error) => stripAnsi(error));
126128
sendMessage('Errors', strippedErrors);
127129
for (let i = 0; i < strippedErrors.length; i++) {
@@ -136,7 +138,7 @@ const onSocketMessage = {
136138
log.error(error);
137139
},
138140
close() {
139-
log.error('[WDS] Disconnected!');
141+
log.error('Disconnected!');
140142
sendMessage('Close');
141143
},
142144
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
'use strict';
2+
3+
const log = require('webpack/lib/logging/runtime');
4+
5+
function createLogger(level = 'info') {
6+
const name = 'webpack-dev-server';
7+
8+
log.configureDefaultLogger({
9+
level,
10+
});
11+
12+
return log.getLogger(name);
13+
}
14+
15+
module.exports = createLogger;

client-src/default/utils/log.js

Lines changed: 0 additions & 47 deletions
This file was deleted.

client-src/default/utils/reloadApp.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@
22

33
/* global WorkerGlobalScope self */
44

5-
const { log } = require('./log');
6-
75
function reloadApp(
86
{ hotReload, hot, liveReload },
9-
{ isUnloading, currentHash }
7+
{ isUnloading, currentHash },
8+
log
109
) {
1110
if (isUnloading || !hotReload) {
1211
return;
1312
}
1413
if (hot) {
15-
log.info('[WDS] App hot update...');
14+
log.info('App hot update...');
1615
const hotEmitter = require('webpack/hot/emitter');
1716
hotEmitter.emit('webpackHotUpdate', currentHash);
1817
if (typeof self !== 'undefined' && self.window) {
@@ -40,7 +39,7 @@ function reloadApp(
4039

4140
function applyReload(rootWindow, intervalId) {
4241
clearInterval(intervalId);
43-
log.info('[WDS] App updated. Reloading...');
42+
log.info('App updated. Reloading...');
4443
rootWindow.location.reload();
4544
}
4645
}

client-src/default/webpack.config.js

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

3+
const { join, resolve } = require('path');
34
const webpack = require('webpack');
45

56
module.exports = {
67
mode: 'production',
8+
entry: [
9+
join(__dirname, '../../node_modules/util'),
10+
join(__dirname, './index.js'),
11+
],
12+
output: {
13+
path: resolve('client'),
14+
filename: 'index.bundle.js',
15+
},
716
module: {
817
rules: [
918
{

lib/Server.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,11 @@ if (!process.env.WEBPACK_DEV_SERVER) {
3838
}
3939

4040
class Server {
41-
constructor(compiler, options = {}, _log) {
41+
constructor(compiler, options = {}, log) {
4242
validateOptions(schema, options, 'webpack Dev Server');
43-
4443
this.compiler = compiler;
4544
this.options = options;
46-
47-
this.log = _log || createLogger(options);
45+
this.log = log || createLogger(compiler);
4846

4947
if (this.options.transportMode !== undefined) {
5048
this.log.warn(
@@ -194,10 +192,7 @@ class Server {
194192

195193
setupDevMiddleware() {
196194
// middleware for serving webpack bundle
197-
this.middleware = webpackDevMiddleware(
198-
this.compiler,
199-
Object.assign({}, this.options, { logLevel: this.log.options.level })
200-
);
195+
this.middleware = webpackDevMiddleware(this.compiler, this.options);
201196
}
202197

203198
setupCompressFeature() {

lib/options.json

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,7 @@
3737
]
3838
},
3939
"clientLogLevel": {
40-
"enum": [
41-
"info",
42-
"warn",
43-
"error",
44-
"debug",
45-
"trace",
46-
"silent",
47-
"none",
48-
"warning"
49-
]
40+
"enum": ["none", "error", "warn", "info", "log", "verbose"]
5041
},
5142
"compress": {
5243
"type": "boolean"
@@ -182,18 +173,12 @@
182173
"log": {
183174
"instanceof": "Function"
184175
},
185-
"logLevel": {
186-
"enum": ["info", "warn", "error", "debug", "trace", "silent"]
187-
},
188176
"logTime": {
189177
"type": "boolean"
190178
},
191179
"mimeTypes": {
192180
"type": "object"
193181
},
194-
"noInfo": {
195-
"type": "boolean"
196-
},
197182
"onListening": {
198183
"instanceof": "Function"
199184
},
@@ -301,9 +286,6 @@
301286
"publicPath": {
302287
"type": "string"
303288
},
304-
"quiet": {
305-
"type": "boolean"
306-
},
307289
"reporter": {
308290
"instanceof": "Function"
309291
},
@@ -439,10 +421,8 @@
439421
"key": "should be {String|Buffer}",
440422
"liveReload": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devserverlivereload-)",
441423
"log": "should be {Function}",
442-
"logLevel": "should be {String} and equal to one of the allowed values\n\n [ 'info', 'warn', 'error', 'debug', 'trace', 'silent' ]\n\n (https://github.com/webpack/webpack-dev-middleware#loglevel)",
443424
"logTime": "should be {Boolean} (https://github.com/webpack/webpack-dev-middleware#logtime)",
444425
"mimeTypes": "should be {Object} (https://webpack.js.org/configuration/dev-server/#devservermimetypes-)",
445-
"noInfo": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devservernoinfo-)",
446426
"onListening": "should be {Function} (https://webpack.js.org/configuration/dev-server/#onlistening)",
447427
"open": "should be {String|Boolean|Object} (https://webpack.js.org/configuration/dev-server/#devserveropen)",
448428
"openPage": "should be {String|Array} (https://webpack.js.org/configuration/dev-server/#devserveropenpage)",
@@ -455,7 +435,6 @@
455435
"proxy": "should be {Object|Array} (https://webpack.js.org/configuration/dev-server/#devserverproxy)",
456436
"public": "should be {String} (https://webpack.js.org/configuration/dev-server/#devserverpublic)",
457437
"publicPath": "should be {String} (https://webpack.js.org/configuration/dev-server/#devserverpublicpath-)",
458-
"quiet": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devserverquiet-)",
459438
"reporter": "should be {Function} (https://github.com/webpack/webpack-dev-middleware#reporter)",
460439
"requestCert": "should be {Boolean}",
461440
"contentBasePublicPath": "should be {String|Array} (https://webpack.js.org/configuration/dev-server/#devservercontentbasepublicpath)",

0 commit comments

Comments
 (0)