From 45b4db76dff3f3b21cea5ae7f9859c60f2cb0f7d Mon Sep 17 00:00:00 2001 From: southorange1228 <15280970040@163.com> Date: Tue, 16 Aug 2022 14:42:09 +0800 Subject: [PATCH] feat: support custom loginfo with server mode --- src/BundleAnalyzerPlugin.js | 4 +++- src/utils.js | 9 +++++++++ src/viewer.js | 8 ++++++-- test/viewer.js | 3 ++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/BundleAnalyzerPlugin.js b/src/BundleAnalyzerPlugin.js index 9e5c2842..c1b065fa 100644 --- a/src/BundleAnalyzerPlugin.js +++ b/src/BundleAnalyzerPlugin.js @@ -23,6 +23,7 @@ class BundleAnalyzerPlugin { logLevel: 'info', // deprecated startAnalyzer: true, + logInfo: utils.defaultLogInfo, ...opts, analyzerPort: 'analyzerPort' in opts ? (opts.analyzerPort === 'auto' ? 0 : opts.analyzerPort) : 8888 }; @@ -107,7 +108,8 @@ class BundleAnalyzerPlugin { bundleDir: this.getBundleDirFromCompiler(), logger: this.logger, defaultSizes: this.opts.defaultSizes, - excludeAssets: this.opts.excludeAssets + excludeAssets: this.opts.excludeAssets, + logInfo: this.opts.logInfo }); } } diff --git a/src/utils.js b/src/utils.js index be4e40cf..b4157782 100644 --- a/src/utils.js +++ b/src/utils.js @@ -53,6 +53,15 @@ exports.defaultTitle = function () { return `${process.env.npm_package_name || 'Webpack Bundle Analyzer'} [${currentTime}]`; }; +exports.defaultLogInfo = function (options) { + const {host, port} = options; + const url = `http://${host}:${port}`; + return ( + `${bold("Webpack Bundle Analyzer")} is started at ${bold(url)}\n` + + `Use ${bold("Ctrl+C")} to close it` + ); +}; + /** * Calls opener on a URI, but silently try / catches it. */ diff --git a/src/viewer.js b/src/viewer.js index 87304f54..58730d90 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -39,7 +39,8 @@ async function startServer(bundleStats, opts) { logger = new Logger(), defaultSizes = 'parsed', excludeAssets = null, - reportTitle + reportTitle, + logInfo } = opts || {}; const analyzerOpts = {logger, excludeAssets}; @@ -73,7 +74,10 @@ async function startServer(bundleStats, opts) { server.listen(port, host, () => { resolve(); - const url = `http://${host}:${server.address().port}`; + const url = logInfo({ + host, + port: server.address().port + }); logger.info( `${bold('Webpack Bundle Analyzer')} is started at ${bold(url)}\n` + diff --git a/test/viewer.js b/test/viewer.js index 717b1e1d..515723d3 100644 --- a/test/viewer.js +++ b/test/viewer.js @@ -16,7 +16,8 @@ describe('WebSocket server', function () { const options = { openBrowser: false, logger: new Logger('silent'), - port: 0 + port: 0, + logInfo: () => '' }; startServer(bundleStats, options)