webpack-bundle-analyzer 2.13.1 → 3.0.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.
@@ -1,101 +1,75 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
+ var _lodash = _interopRequireDefault(require("lodash"));
8
9
 
9
- var _lodash = require('lodash');
10
+ var _gzipSize = _interopRequireDefault(require("gzip-size"));
10
11
 
11
- var _lodash2 = _interopRequireDefault(_lodash);
12
-
13
- var _gzipSize = require('gzip-size');
14
-
15
- var _gzipSize2 = _interopRequireDefault(_gzipSize);
16
-
17
- var _Node2 = require('./Node');
18
-
19
- var _Node3 = _interopRequireDefault(_Node2);
12
+ var _Node = _interopRequireDefault(require("./Node"));
20
13
 
21
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
15
 
23
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
24
-
25
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
26
-
27
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
16
+ class Module extends _Node.default {
17
+ constructor(name, data, parent) {
18
+ super(name, parent);
19
+ this.data = data;
20
+ }
28
21
 
29
- var Module = function (_Node) {
30
- _inherits(Module, _Node);
22
+ get src() {
23
+ return this.data.parsedSrc;
24
+ }
31
25
 
32
- function Module(name, data, parent) {
33
- _classCallCheck(this, Module);
26
+ set src(value) {
27
+ this.data.parsedSrc = value;
28
+ delete this._gzipSize;
29
+ }
34
30
 
35
- var _this = _possibleConstructorReturn(this, (Module.__proto__ || Object.getPrototypeOf(Module)).call(this, name, parent));
31
+ get size() {
32
+ return this.data.size;
33
+ }
36
34
 
37
- _this.data = data;
38
- return _this;
35
+ set size(value) {
36
+ this.data.size = value;
39
37
  }
40
38
 
41
- _createClass(Module, [{
42
- key: 'mergeData',
43
- value: function mergeData(data) {
44
- if (data.size) {
45
- this.size += data.size;
46
- }
39
+ get parsedSize() {
40
+ return this.src ? this.src.length : undefined;
41
+ }
47
42
 
48
- if (data.parsedSrc) {
49
- this.src = (this.src || '') + data.parsedSrc;
50
- }
43
+ get gzipSize() {
44
+ if (!_lodash.default.has(this, '_gzipSize')) {
45
+ this._gzipSize = this.src ? _gzipSize.default.sync(this.src) : undefined;
51
46
  }
52
- }, {
53
- key: 'toChartData',
54
- value: function toChartData() {
55
- return {
56
- id: this.data.id,
57
- label: this.name,
58
- path: this.path,
59
- statSize: this.size,
60
- parsedSize: this.parsedSize,
61
- gzipSize: this.gzipSize
62
- };
63
- }
64
- }, {
65
- key: 'src',
66
- get: function get() {
67
- return this.data.parsedSrc;
68
- },
69
- set: function set(value) {
70
- this.data.parsedSrc = value;
71
- delete this._gzipSize;
72
- }
73
- }, {
74
- key: 'size',
75
- get: function get() {
76
- return this.data.size;
77
- },
78
- set: function set(value) {
79
- this.data.size = value;
80
- }
81
- }, {
82
- key: 'parsedSize',
83
- get: function get() {
84
- return this.src ? this.src.length : undefined;
47
+
48
+ return this._gzipSize;
49
+ }
50
+
51
+ mergeData(data) {
52
+ if (data.size) {
53
+ this.size += data.size;
85
54
  }
86
- }, {
87
- key: 'gzipSize',
88
- get: function get() {
89
- if (!_lodash2.default.has(this, '_gzipSize')) {
90
- this._gzipSize = this.src ? _gzipSize2.default.sync(this.src) : undefined;
91
- }
92
-
93
- return this._gzipSize;
55
+
56
+ if (data.parsedSrc) {
57
+ this.src = (this.src || '') + data.parsedSrc;
94
58
  }
95
- }]);
59
+ }
60
+
61
+ toChartData() {
62
+ return {
63
+ id: this.data.id,
64
+ label: this.name,
65
+ path: this.path,
66
+ statSize: this.size,
67
+ parsedSize: this.parsedSize,
68
+ gzipSize: this.gzipSize
69
+ };
70
+ }
96
71
 
97
- return Module;
98
- }(_Node3.default);
72
+ }
99
73
 
100
74
  exports.default = Module;
101
75
  ;
package/lib/tree/Node.js CHANGED
@@ -1,38 +1,33 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
-
9
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10
-
11
- var Node = function () {
12
- function Node(name, parent) {
13
- _classCallCheck(this, Node);
14
-
8
+ class Node {
9
+ constructor(name, parent) {
15
10
  this.name = name;
16
11
  this.parent = parent;
17
12
  }
18
13
 
19
- _createClass(Node, [{
20
- key: 'path',
21
- get: function get() {
22
- var path = [];
23
- var node = this;
24
-
25
- while (node) {
26
- path.push(node.name);
27
- node = node.parent;
28
- }
14
+ get path() {
15
+ const path = [];
16
+ let node = this;
29
17
 
30
- return path.reverse().join('/');
18
+ while (node) {
19
+ path.push(node.name);
20
+ node = node.parent;
31
21
  }
32
- }]);
33
22
 
34
- return Node;
35
- }();
23
+ return path.reverse().join('/');
24
+ }
25
+
26
+ get isRoot() {
27
+ return !this.parent;
28
+ }
29
+
30
+ }
36
31
 
37
32
  exports.default = Node;
38
33
  ;
package/lib/tree/utils.js CHANGED
@@ -1,34 +1,26 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getModulePathParts = getModulePathParts;
7
7
 
8
- var _lodash = require('lodash');
9
-
10
- var _lodash2 = _interopRequireDefault(_lodash);
8
+ var _lodash = _interopRequireDefault(require("lodash"));
11
9
 
12
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
11
 
14
- var MULTI_MODULE_REGEXP = /^multi /;
12
+ const MULTI_MODULE_REGEXP = /^multi /;
15
13
 
16
14
  function getModulePathParts(moduleData) {
17
15
  if (MULTI_MODULE_REGEXP.test(moduleData.identifier)) {
18
16
  return [moduleData.identifier];
19
17
  }
20
18
 
21
- var parsedPath = _lodash2.default
22
- // Removing loaders from module path: they're joined by `!` and the last part is a raw module path
23
- .last(moduleData.name.split('!'))
24
- // Splitting module path into parts
25
- .split('/')
26
- // Removing first `.`
27
- .slice(1)
28
- // Replacing `~` with `node_modules`
29
- .map(function (part) {
30
- return part === '~' ? 'node_modules' : part;
31
- });
19
+ const parsedPath = _lodash.default // Removing loaders from module path: they're joined by `!` and the last part is a raw module path
20
+ .last(moduleData.name.split('!')) // Splitting module path into parts
21
+ .split('/') // Removing first `.`
22
+ .slice(1) // Replacing `~` with `node_modules`
23
+ .map(part => part === '~' ? 'node_modules' : part);
32
24
 
33
25
  return parsedPath.length ? parsedPath : null;
34
26
  }
package/lib/utils.js CHANGED
@@ -1,40 +1,35 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- var _require = require('util'),
4
- inspect = _require.inspect;
3
+ const {
4
+ inspect
5
+ } = require('util');
5
6
 
6
- var _ = require('lodash');
7
+ const _ = require('lodash');
7
8
 
8
9
  exports.createAssetsFilter = createAssetsFilter;
9
10
 
10
11
  function createAssetsFilter(excludePatterns) {
11
- var excludeFunctions = _(excludePatterns).castArray().compact().map(function (pattern) {
12
+ const excludeFunctions = _(excludePatterns).castArray().compact().map(pattern => {
12
13
  if (typeof pattern === 'string') {
13
14
  pattern = new RegExp(pattern);
14
15
  }
15
16
 
16
17
  if (_.isRegExp(pattern)) {
17
- return function (asset) {
18
- return pattern.test(asset);
19
- };
18
+ return asset => pattern.test(asset);
20
19
  }
21
20
 
22
21
  if (!_.isFunction(pattern)) {
23
- throw new TypeError(`Pattern should be either string, RegExp or a function, but "${inspect(pattern, { depth: 0 })}" got.`);
22
+ throw new TypeError(`Pattern should be either string, RegExp or a function, but "${inspect(pattern, {
23
+ depth: 0
24
+ })}" got.`);
24
25
  }
25
26
 
26
27
  return pattern;
27
28
  }).value();
28
29
 
29
30
  if (excludeFunctions.length) {
30
- return function (asset) {
31
- return _.every(excludeFunctions, function (fn) {
32
- return fn(asset) !== true;
33
- });
34
- };
31
+ return asset => _.every(excludeFunctions, fn => fn(asset) !== true);
35
32
  } else {
36
- return function () {
37
- return true;
38
- };
33
+ return () => true;
39
34
  }
40
35
  }
package/lib/viewer.js CHANGED
@@ -1,56 +1,87 @@
1
- 'use strict';
2
-
3
- var startServer = function () {
4
- var _ref = _asyncToGenerator(function* (bundleStats, opts) {
5
- var _ref2 = opts || {},
6
- _ref2$port = _ref2.port,
7
- port = _ref2$port === undefined ? 8888 : _ref2$port,
8
- _ref2$host = _ref2.host,
9
- host = _ref2$host === undefined ? '127.0.0.1' : _ref2$host,
10
- _ref2$openBrowser = _ref2.openBrowser,
11
- openBrowser = _ref2$openBrowser === undefined ? true : _ref2$openBrowser,
12
- _ref2$bundleDir = _ref2.bundleDir,
13
- bundleDir = _ref2$bundleDir === undefined ? null : _ref2$bundleDir,
14
- _ref2$logger = _ref2.logger,
15
- logger = _ref2$logger === undefined ? new Logger() : _ref2$logger,
16
- _ref2$defaultSizes = _ref2.defaultSizes,
17
- defaultSizes = _ref2$defaultSizes === undefined ? 'parsed' : _ref2$defaultSizes,
18
- _ref2$excludeAssets = _ref2.excludeAssets,
19
- excludeAssets = _ref2$excludeAssets === undefined ? null : _ref2$excludeAssets;
20
-
21
- var analyzerOpts = { logger, excludeAssets };
22
-
23
- var chartData = getChartData(analyzerOpts, bundleStats, bundleDir);
1
+ "use strict";
24
2
 
25
- if (!chartData) return;
3
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+
5
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
6
+
7
+ const path = require('path');
8
+
9
+ const fs = require('fs');
10
+
11
+ const http = require('http');
12
+
13
+ const WebSocket = require('ws');
14
+
15
+ const _ = require('lodash');
16
+
17
+ const express = require('express');
18
+
19
+ const ejs = require('ejs');
20
+
21
+ const opener = require('opener');
22
+
23
+ const mkdir = require('mkdirp');
24
+
25
+ const {
26
+ bold
27
+ } = require('chalk');
28
+
29
+ const Logger = require('./Logger');
30
+
31
+ const analyzer = require('./analyzer');
32
+
33
+ const projectRoot = path.resolve(__dirname, '..');
34
+ module.exports = {
35
+ startServer,
36
+ generateReport,
37
+ // deprecated
38
+ start: startServer
39
+ };
26
40
 
27
- var app = express();
41
+ function startServer(_x, _x2) {
42
+ return _startServer.apply(this, arguments);
43
+ }
28
44
 
29
- // Explicitly using our `ejs` dependency to render templates
45
+ function _startServer() {
46
+ _startServer = _asyncToGenerator(function* (bundleStats, opts) {
47
+ const {
48
+ port = 8888,
49
+ host = '127.0.0.1',
50
+ openBrowser = true,
51
+ bundleDir = null,
52
+ logger = new Logger(),
53
+ defaultSizes = 'parsed',
54
+ excludeAssets = null
55
+ } = opts || {};
56
+ const analyzerOpts = {
57
+ logger,
58
+ excludeAssets
59
+ };
60
+ let chartData = getChartData(analyzerOpts, bundleStats, bundleDir);
61
+ if (!chartData) return;
62
+ const app = express(); // Explicitly using our `ejs` dependency to render templates
30
63
  // Fixes #17
64
+
31
65
  app.engine('ejs', require('ejs').renderFile);
32
66
  app.set('view engine', 'ejs');
33
67
  app.set('views', `${projectRoot}/views`);
34
68
  app.use(express.static(`${projectRoot}/public`));
35
-
36
- app.use('/', function (req, res) {
69
+ app.use('/', (req, res) => {
37
70
  res.render('viewer', {
38
71
  mode: 'server',
72
+
39
73
  get chartData() {
40
74
  return JSON.stringify(chartData);
41
75
  },
76
+
42
77
  defaultSizes: JSON.stringify(defaultSizes)
43
78
  });
44
79
  });
45
-
46
- var server = http.createServer(app);
47
-
48
- yield new Promise(function (resolve) {
49
- server.listen(port, host, function () {
80
+ const server = http.createServer(app);
81
+ yield new Promise(resolve => {
82
+ server.listen(port, host, () => {
50
83
  resolve();
51
-
52
- var url = `http://${host}:${server.address().port}`;
53
-
84
+ const url = `http://${host}:${server.address().port}`;
54
85
  logger.info(`${bold('Webpack Bundle Analyzer')} is started at ${bold(url)}\n` + `Use ${bold('Ctrl+C')} to close it`);
55
86
 
56
87
  if (openBrowser) {
@@ -58,18 +89,16 @@ var startServer = function () {
58
89
  }
59
90
  });
60
91
  });
61
-
62
- var wss = new WebSocket.Server({ server });
63
-
64
- wss.on('connection', function (ws) {
65
- ws.on('error', function (err) {
92
+ const wss = new WebSocket.Server({
93
+ server
94
+ });
95
+ wss.on('connection', ws => {
96
+ ws.on('error', err => {
66
97
  // Ignore network errors like `ECONNRESET`, `EPIPE`, etc.
67
98
  if (err.errno) return;
68
-
69
99
  logger.info(err.message);
70
100
  });
71
101
  });
72
-
73
102
  return {
74
103
  ws: wss,
75
104
  http: server,
@@ -77,13 +106,10 @@ var startServer = function () {
77
106
  };
78
107
 
79
108
  function updateChartData(bundleStats) {
80
- var newChartData = getChartData(analyzerOpts, bundleStats, bundleDir);
81
-
109
+ const newChartData = getChartData(analyzerOpts, bundleStats, bundleDir);
82
110
  if (!newChartData) return;
83
-
84
111
  chartData = newChartData;
85
-
86
- wss.clients.forEach(function (client) {
112
+ wss.clients.forEach(client => {
87
113
  if (client.readyState === WebSocket.OPEN) {
88
114
  client.send(JSON.stringify({
89
115
  event: 'chartDataUpdated',
@@ -93,72 +119,33 @@ var startServer = function () {
93
119
  });
94
120
  }
95
121
  });
96
-
97
- return function startServer(_x, _x2) {
98
- return _ref.apply(this, arguments);
99
- };
100
- }();
101
-
102
- function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
103
-
104
- var path = require('path');
105
- var fs = require('fs');
106
- var http = require('http');
107
-
108
- var WebSocket = require('ws');
109
- var _ = require('lodash');
110
- var express = require('express');
111
- var ejs = require('ejs');
112
- var opener = require('opener');
113
- var mkdir = require('mkdirp');
114
-
115
- var _require = require('chalk'),
116
- bold = _require.bold;
117
-
118
- var Logger = require('./Logger');
119
- var analyzer = require('./analyzer');
120
-
121
- var projectRoot = path.resolve(__dirname, '..');
122
-
123
- module.exports = {
124
- startServer,
125
- generateReport,
126
- // deprecated
127
- start: startServer
128
- };
122
+ return _startServer.apply(this, arguments);
123
+ }
129
124
 
130
125
  function generateReport(bundleStats, opts) {
131
- var _ref3 = opts || {},
132
- _ref3$openBrowser = _ref3.openBrowser,
133
- openBrowser = _ref3$openBrowser === undefined ? true : _ref3$openBrowser,
134
- _ref3$reportFilename = _ref3.reportFilename,
135
- reportFilename = _ref3$reportFilename === undefined ? 'report.html' : _ref3$reportFilename,
136
- _ref3$bundleDir = _ref3.bundleDir,
137
- bundleDir = _ref3$bundleDir === undefined ? null : _ref3$bundleDir,
138
- _ref3$logger = _ref3.logger,
139
- logger = _ref3$logger === undefined ? new Logger() : _ref3$logger,
140
- _ref3$defaultSizes = _ref3.defaultSizes,
141
- defaultSizes = _ref3$defaultSizes === undefined ? 'parsed' : _ref3$defaultSizes,
142
- _ref3$excludeAssets = _ref3.excludeAssets,
143
- excludeAssets = _ref3$excludeAssets === undefined ? null : _ref3$excludeAssets;
144
-
145
- var chartData = getChartData({ logger, excludeAssets }, bundleStats, bundleDir);
146
-
126
+ const {
127
+ openBrowser = true,
128
+ reportFilename = 'report.html',
129
+ bundleDir = null,
130
+ logger = new Logger(),
131
+ defaultSizes = 'parsed',
132
+ excludeAssets = null
133
+ } = opts || {};
134
+ const chartData = getChartData({
135
+ logger,
136
+ excludeAssets
137
+ }, bundleStats, bundleDir);
147
138
  if (!chartData) return;
148
-
149
139
  ejs.renderFile(`${projectRoot}/views/viewer.ejs`, {
150
140
  mode: 'static',
151
141
  chartData: JSON.stringify(chartData),
152
142
  assetContent: getAssetContent,
153
143
  defaultSizes: JSON.stringify(defaultSizes)
154
- }, function (err, reportHtml) {
144
+ }, (err, reportHtml) => {
155
145
  if (err) return logger.error(err);
156
-
157
- var reportFilepath = path.resolve(bundleDir || process.cwd(), reportFilename);
158
-
146
+ const reportFilepath = path.resolve(bundleDir || process.cwd(), reportFilename);
159
147
  mkdir.sync(path.dirname(reportFilepath));
160
148
  fs.writeFileSync(reportFilepath, reportHtml);
161
-
162
149
  logger.info(`${bold('Webpack Bundle Analyzer')} saved report to ${bold(reportFilepath)}`);
163
150
 
164
151
  if (openBrowser) {
@@ -171,17 +158,14 @@ function getAssetContent(filename) {
171
158
  return fs.readFileSync(`${projectRoot}/public/${filename}`, 'utf8');
172
159
  }
173
160
 
174
- function getChartData(analyzerOpts) {
175
- var chartData = void 0;
176
- var logger = analyzerOpts.logger;
177
-
161
+ function getChartData(analyzerOpts, ...args) {
162
+ let chartData;
163
+ const {
164
+ logger
165
+ } = analyzerOpts;
178
166
 
179
167
  try {
180
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
181
- args[_key - 1] = arguments[_key];
182
- }
183
-
184
- chartData = analyzer.getViewerData.apply(analyzer, args.concat([analyzerOpts]));
168
+ chartData = analyzer.getViewerData(...args, analyzerOpts);
185
169
  } catch (err) {
186
170
  logger.error(`Could't analyze webpack bundle:\n${err}`);
187
171
  logger.debug(err.stack);