@bundle-stats/plugin-webpack-filter 4.0.0-alpha.9 → 4.0.0-rc.1
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/lib/index.js +47 -39
- package/lib/index.js.map +1 -1
- package/lib-esm/index.js +49 -36
- package/lib-esm/index.js.map +1 -1
- package/package.json +6 -9
- package/src/index.ts +95 -57
- package/types/index.d.ts +21 -13
package/lib/index.js
CHANGED
|
@@ -1,51 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const flow_1 = __importDefault(require("lodash/fp/flow"));
|
|
7
|
-
const fromPairs_1 = __importDefault(require("lodash/fp/fromPairs"));
|
|
8
|
-
const get_1 = __importDefault(require("lodash/fp/get"));
|
|
9
|
-
const map_1 = __importDefault(require("lodash/fp/map"));
|
|
10
|
-
const filter_1 = __importDefault(require("lodash/fp/filter"));
|
|
11
|
-
const pick_1 = __importDefault(require("lodash/fp/pick"));
|
|
12
|
-
const toPairs_1 = __importDefault(require("lodash/fp/toPairs"));
|
|
13
3
|
const PATH_IGNORE_PATTERN = '.map$';
|
|
14
4
|
exports.default = (source, options = {}) => {
|
|
15
|
-
var _a;
|
|
16
5
|
const pathIgnorePattern = new RegExp(options.pathIgnorePattern || PATH_IGNORE_PATTERN);
|
|
17
|
-
const builtAt =
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
6
|
+
const { builtAt, hash } = source;
|
|
7
|
+
const assets = source.assets?.reduce((agg, asset) => {
|
|
8
|
+
if (!asset.name || pathIgnorePattern.test(asset.name)) {
|
|
9
|
+
return agg;
|
|
10
|
+
}
|
|
11
|
+
agg.push({
|
|
12
|
+
name: asset.name,
|
|
13
|
+
size: asset.size,
|
|
14
|
+
});
|
|
15
|
+
return agg;
|
|
16
|
+
}, []) || [];
|
|
17
|
+
const chunks = source.chunks?.reduce((agg, chunk) => {
|
|
18
|
+
if (typeof chunk.id === 'undefined' || chunk.id === null) {
|
|
19
|
+
return agg;
|
|
20
|
+
}
|
|
21
|
+
agg.push({
|
|
22
|
+
id: chunk.id,
|
|
23
|
+
entry: chunk.entry,
|
|
24
|
+
initial: chunk.initial,
|
|
25
|
+
files: chunk.files,
|
|
26
|
+
names: chunk.names,
|
|
27
|
+
});
|
|
28
|
+
return agg;
|
|
29
|
+
}, []) || [];
|
|
30
|
+
const modules = source.modules?.reduce((agg, moduleStats) => {
|
|
31
|
+
if (!moduleStats.name) {
|
|
32
|
+
return agg;
|
|
33
|
+
}
|
|
34
|
+
const moduleChunks = moduleStats.chunks?.filter((chunkId) => chunkId !== null && typeof chunkId !== 'undefined') || [];
|
|
35
|
+
const concatenatedModules = moduleStats.modules?.reduce((aggConcatenatedModules, concatenatedModule) => {
|
|
36
|
+
if (!concatenatedModule.name) {
|
|
37
|
+
return aggConcatenatedModules;
|
|
38
|
+
}
|
|
39
|
+
aggConcatenatedModules.push({
|
|
40
|
+
name: concatenatedModule.name,
|
|
41
|
+
size: concatenatedModule.size,
|
|
42
|
+
});
|
|
43
|
+
return aggConcatenatedModules;
|
|
44
|
+
}, []);
|
|
45
|
+
agg.push({
|
|
46
|
+
name: moduleStats.name,
|
|
47
|
+
size: moduleStats.size,
|
|
48
|
+
chunks: moduleChunks,
|
|
49
|
+
...(concatenatedModules && { modules: concatenatedModules }),
|
|
50
|
+
});
|
|
51
|
+
return agg;
|
|
52
|
+
}, []) || [];
|
|
44
53
|
return {
|
|
45
54
|
builtAt,
|
|
46
55
|
hash,
|
|
47
56
|
assets,
|
|
48
|
-
entrypoints,
|
|
49
57
|
chunks,
|
|
50
58
|
modules,
|
|
51
59
|
};
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAGA,MAAM,mBAAmB,GAAG,OAAO,CAAC;AA6CpC,kBAAe,CACb,MAAwB,EACxB,UAA8B,EAAE,EACV,EAAE;IACxB,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,CAAC;IAGvF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAGjC,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAEnC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrD,OAAO,GAAG,CAAC;SACZ;QAED,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAsC,CAAC,IAAI,EAAE,CAAC;IAEnD,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAEnC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,WAAW,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE;YACxD,OAAO,GAAG,CAAC;SACZ;QAED,GAAG,CAAC,IAAI,CAAC;YACP,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAsC,CAAC,IAAI,EAAE,CAAC;IAEnD,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACrB,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,YAAY,GAChB,WAAW,CAAC,MAAM,EAAE,MAAM,CACxB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,CAChE,IAAI,EAAE,CAAC;QAEV,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CACrD,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,EAAE;YAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;gBAC5B,OAAO,sBAAsB,CAAC;aAC/B;YAED,sBAAsB,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,kBAAkB,CAAC,IAAI;gBAC7B,IAAI,EAAE,kBAAkB,CAAC,IAAI;aAC9B,CAAC,CAAC;YAEH,OAAO,sBAAsB,CAAC;QAChC,CAAC,EACD,EAAmD,CACpD,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,MAAM,EAAE,YAAY;YACpB,GAAG,CAAC,mBAAmB,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;SAC7D,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA2C,CAAC,IAAI,EAAE,CAAC;IAExD,OAAO;QACL,OAAO;QACP,IAAI;QACJ,MAAM;QACN,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
|
package/lib-esm/index.js
CHANGED
|
@@ -1,46 +1,59 @@
|
|
|
1
|
-
import flow from 'lodash/fp/flow';
|
|
2
|
-
import fromPairs from 'lodash/fp/fromPairs';
|
|
3
|
-
import get from 'lodash/fp/get';
|
|
4
|
-
import map from 'lodash/fp/map';
|
|
5
|
-
import _filter from 'lodash/fp/filter';
|
|
6
|
-
import pick from 'lodash/fp/pick';
|
|
7
|
-
import toPairs from 'lodash/fp/toPairs';
|
|
8
1
|
const PATH_IGNORE_PATTERN = '.map$';
|
|
9
2
|
export default (source, options = {}) => {
|
|
10
|
-
var _a;
|
|
3
|
+
var _a, _b, _c;
|
|
11
4
|
const pathIgnorePattern = new RegExp(options.pathIgnorePattern || PATH_IGNORE_PATTERN);
|
|
12
|
-
const builtAt =
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
5
|
+
const { builtAt, hash } = source;
|
|
6
|
+
const assets = ((_a = source.assets) === null || _a === void 0 ? void 0 : _a.reduce((agg, asset) => {
|
|
7
|
+
if (!asset.name || pathIgnorePattern.test(asset.name)) {
|
|
8
|
+
return agg;
|
|
9
|
+
}
|
|
10
|
+
agg.push({
|
|
11
|
+
name: asset.name,
|
|
12
|
+
size: asset.size,
|
|
13
|
+
});
|
|
14
|
+
return agg;
|
|
15
|
+
}, [])) || [];
|
|
16
|
+
const chunks = ((_b = source.chunks) === null || _b === void 0 ? void 0 : _b.reduce((agg, chunk) => {
|
|
17
|
+
if (typeof chunk.id === 'undefined' || chunk.id === null) {
|
|
18
|
+
return agg;
|
|
19
|
+
}
|
|
20
|
+
agg.push({
|
|
21
|
+
id: chunk.id,
|
|
22
|
+
entry: chunk.entry,
|
|
23
|
+
initial: chunk.initial,
|
|
24
|
+
files: chunk.files,
|
|
25
|
+
names: chunk.names,
|
|
26
|
+
});
|
|
27
|
+
return agg;
|
|
28
|
+
}, [])) || [];
|
|
29
|
+
const modules = ((_c = source.modules) === null || _c === void 0 ? void 0 : _c.reduce((agg, moduleStats) => {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
if (!moduleStats.name) {
|
|
32
|
+
return agg;
|
|
33
|
+
}
|
|
34
|
+
const moduleChunks = ((_a = moduleStats.chunks) === null || _a === void 0 ? void 0 : _a.filter((chunkId) => chunkId !== null && typeof chunkId !== 'undefined')) || [];
|
|
35
|
+
const concatenatedModules = (_b = moduleStats.modules) === null || _b === void 0 ? void 0 : _b.reduce((aggConcatenatedModules, concatenatedModule) => {
|
|
36
|
+
if (!concatenatedModule.name) {
|
|
37
|
+
return aggConcatenatedModules;
|
|
38
|
+
}
|
|
39
|
+
aggConcatenatedModules.push({
|
|
40
|
+
name: concatenatedModule.name,
|
|
41
|
+
size: concatenatedModule.size,
|
|
42
|
+
});
|
|
43
|
+
return aggConcatenatedModules;
|
|
44
|
+
}, []);
|
|
45
|
+
agg.push({
|
|
46
|
+
name: moduleStats.name,
|
|
47
|
+
size: moduleStats.size,
|
|
48
|
+
chunks: moduleChunks,
|
|
49
|
+
...(concatenatedModules && { modules: concatenatedModules }),
|
|
50
|
+
});
|
|
51
|
+
return agg;
|
|
52
|
+
}, [])) || [];
|
|
39
53
|
return {
|
|
40
54
|
builtAt,
|
|
41
55
|
hash,
|
|
42
56
|
assets,
|
|
43
|
-
entrypoints,
|
|
44
57
|
chunks,
|
|
45
58
|
modules,
|
|
46
59
|
};
|
package/lib-esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,mBAAmB,GAAG,OAAO,CAAC;AA6CpC,eAAe,CACb,MAAwB,EACxB,UAA8B,EAAE,EACV,EAAE;;IACxB,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,CAAC;IAGvF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAGjC,MAAM,MAAM,GACV,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAEnC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrD,OAAO,GAAG,CAAC;SACZ;QAED,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAsC,CAAC,KAAI,EAAE,CAAC;IAEnD,MAAM,MAAM,GACV,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAEnC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,WAAW,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE;YACxD,OAAO,GAAG,CAAC;SACZ;QAED,GAAG,CAAC,IAAI,CAAC;YACP,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAsC,CAAC,KAAI,EAAE,CAAC;IAEnD,MAAM,OAAO,GACX,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACrB,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,YAAY,GAChB,CAAA,MAAA,WAAW,CAAC,MAAM,0CAAE,MAAM,CACxB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,CAChE,KAAI,EAAE,CAAC;QAEV,MAAM,mBAAmB,GAAG,MAAA,WAAW,CAAC,OAAO,0CAAE,MAAM,CACrD,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,EAAE;YAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;gBAC5B,OAAO,sBAAsB,CAAC;aAC/B;YAED,sBAAsB,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,kBAAkB,CAAC,IAAI;gBAC7B,IAAI,EAAE,kBAAkB,CAAC,IAAI;aAC9B,CAAC,CAAC;YAEH,OAAO,sBAAsB,CAAC;QAChC,CAAC,EACD,EAAmD,CACpD,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,MAAM,EAAE,YAAY;YACpB,GAAG,CAAC,mBAAmB,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;SAC7D,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA2C,CAAC,KAAI,EAAE,CAAC;IAExD,OAAO;QACL,OAAO;QACP,IAAI;QACJ,MAAM;QACN,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bundle-stats/plugin-webpack-filter",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-rc.1",
|
|
4
4
|
"description": "BundleStats webpack filter plugin",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -35,21 +35,18 @@
|
|
|
35
35
|
},
|
|
36
36
|
"homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/plugin-webpack-filter#readme",
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@types/jest": "28.1.
|
|
39
|
-
"@types/lodash": "4.14.182",
|
|
38
|
+
"@types/jest": "28.1.4",
|
|
40
39
|
"@types/webpack": "5.28.0",
|
|
41
|
-
"core-js": "3.23.
|
|
40
|
+
"core-js": "3.23.3",
|
|
42
41
|
"jest": "27.5.1",
|
|
43
|
-
"jest-cli": "28.1.
|
|
42
|
+
"jest-cli": "28.1.2",
|
|
44
43
|
"jest-date-mock": "1.0.8",
|
|
45
|
-
"lodash": "4.17.21",
|
|
46
44
|
"regenerator-runtime": "0.13.9",
|
|
47
45
|
"ts-jest": "28.0.5",
|
|
48
46
|
"typescript": "4.7.4"
|
|
49
47
|
},
|
|
50
48
|
"peerDependencies": {
|
|
51
|
-
"core-js": "^3.0.0"
|
|
52
|
-
"lodash": "^4.0.0"
|
|
49
|
+
"core-js": "^3.0.0"
|
|
53
50
|
},
|
|
54
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "8f28ce5d4c570ac11670f5f0f34a3c9c3ea6a162"
|
|
55
52
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
import {
|
|
3
|
-
import flow from 'lodash/fp/flow';
|
|
4
|
-
import fromPairs from 'lodash/fp/fromPairs';
|
|
5
|
-
import get from 'lodash/fp/get';
|
|
6
|
-
import map from 'lodash/fp/map';
|
|
7
|
-
import _filter from 'lodash/fp/filter';
|
|
8
|
-
import pick from 'lodash/fp/pick';
|
|
9
|
-
import toPairs from 'lodash/fp/toPairs';
|
|
2
|
+
import { StatsCompilation } from 'webpack';
|
|
10
3
|
|
|
11
4
|
const PATH_IGNORE_PATTERN = '.map$';
|
|
12
5
|
|
|
@@ -14,84 +7,129 @@ interface BundleStatsOptions {
|
|
|
14
7
|
pathIgnorePattern?: string;
|
|
15
8
|
}
|
|
16
9
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
assets: Array<string>;
|
|
10
|
+
export interface WebpackStatsFilteredAsset {
|
|
11
|
+
name: string;
|
|
12
|
+
size?: number;
|
|
21
13
|
}
|
|
22
14
|
|
|
23
|
-
interface WebpackStatsFilteredChunk {
|
|
15
|
+
export interface WebpackStatsFilteredChunk {
|
|
24
16
|
entry: boolean;
|
|
25
17
|
id: number | string;
|
|
26
18
|
initial: boolean;
|
|
27
|
-
files
|
|
28
|
-
names
|
|
19
|
+
files?: Array<string>;
|
|
20
|
+
names?: Array<string>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface WebpackStatsFilteredModule {
|
|
24
|
+
name: string;
|
|
25
|
+
size?: number;
|
|
26
|
+
chunks: Array<string | number>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface WebpackStatsFilteredConcatenatedModule {
|
|
30
|
+
name: string;
|
|
31
|
+
size?: number;
|
|
29
32
|
}
|
|
30
33
|
|
|
31
|
-
interface
|
|
32
|
-
modules?: Array<
|
|
34
|
+
export interface WebpackStatsFilteredRootModule extends WebpackStatsFilteredModule {
|
|
35
|
+
modules?: Array<WebpackStatsFilteredConcatenatedModule>;
|
|
33
36
|
}
|
|
34
37
|
|
|
35
|
-
interface WebpackStatsFiltered {
|
|
36
|
-
builtAt?:
|
|
38
|
+
export interface WebpackStatsFiltered {
|
|
39
|
+
builtAt?: number;
|
|
37
40
|
hash?: string;
|
|
38
41
|
assets?: Array<WebpackStatsFilteredAsset>;
|
|
39
|
-
entrypoints?: Record<string, WebpackStatsFileteredEntrypoint>;
|
|
40
42
|
chunks?: Array<WebpackStatsFilteredChunk>;
|
|
41
|
-
modules?: Array<
|
|
43
|
+
modules?: Array<WebpackStatsFilteredRootModule>;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
/**
|
|
45
47
|
* Filter webpack stats data
|
|
46
48
|
*/
|
|
47
49
|
export default (
|
|
48
|
-
source: StatsCompilation,
|
|
50
|
+
source: StatsCompilation,
|
|
51
|
+
options: BundleStatsOptions = {},
|
|
49
52
|
): WebpackStatsFiltered => {
|
|
50
53
|
const pathIgnorePattern = new RegExp(options.pathIgnorePattern || PATH_IGNORE_PATTERN);
|
|
51
54
|
|
|
52
55
|
// meta
|
|
53
|
-
const builtAt =
|
|
54
|
-
const hash = get('hash')(source);
|
|
56
|
+
const { builtAt, hash } = source;
|
|
55
57
|
|
|
56
58
|
// rawData
|
|
57
|
-
const assets =
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
59
|
+
const assets =
|
|
60
|
+
source.assets?.reduce((agg, asset) => {
|
|
61
|
+
// Skip assets with empty name or ignore pattern
|
|
62
|
+
if (!asset.name || pathIgnorePattern.test(asset.name)) {
|
|
63
|
+
return agg;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
agg.push({
|
|
67
|
+
name: asset.name,
|
|
68
|
+
size: asset.size,
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
return agg;
|
|
72
|
+
}, [] as Array<WebpackStatsFilteredAsset>) || [];
|
|
73
|
+
|
|
74
|
+
const chunks =
|
|
75
|
+
source.chunks?.reduce((agg, chunk) => {
|
|
76
|
+
// Skip chunks with empty ids
|
|
77
|
+
if (typeof chunk.id === 'undefined' || chunk.id === null) {
|
|
78
|
+
return agg;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
agg.push({
|
|
82
|
+
id: chunk.id,
|
|
83
|
+
entry: chunk.entry,
|
|
84
|
+
initial: chunk.initial,
|
|
85
|
+
files: chunk.files,
|
|
86
|
+
names: chunk.names,
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
return agg;
|
|
90
|
+
}, [] as Array<WebpackStatsFilteredChunk>) || [];
|
|
91
|
+
|
|
92
|
+
const modules =
|
|
93
|
+
source.modules?.reduce((agg, moduleStats) => {
|
|
94
|
+
if (!moduleStats.name) {
|
|
95
|
+
return agg;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const moduleChunks =
|
|
99
|
+
moduleStats.chunks?.filter(
|
|
100
|
+
(chunkId) => chunkId !== null && typeof chunkId !== 'undefined',
|
|
101
|
+
) || [];
|
|
102
|
+
|
|
103
|
+
const concatenatedModules = moduleStats.modules?.reduce(
|
|
104
|
+
(aggConcatenatedModules, concatenatedModule) => {
|
|
105
|
+
if (!concatenatedModule.name) {
|
|
106
|
+
return aggConcatenatedModules;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
aggConcatenatedModules.push({
|
|
110
|
+
name: concatenatedModule.name,
|
|
111
|
+
size: concatenatedModule.size,
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
return aggConcatenatedModules;
|
|
115
|
+
},
|
|
116
|
+
[] as Array<WebpackStatsFilteredConcatenatedModule>,
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
agg.push({
|
|
120
|
+
name: moduleStats.name,
|
|
121
|
+
size: moduleStats.size,
|
|
122
|
+
chunks: moduleChunks,
|
|
123
|
+
...(concatenatedModules && { modules: concatenatedModules }),
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
return agg;
|
|
127
|
+
}, [] as Array<WebpackStatsFilteredRootModule>) || [];
|
|
89
128
|
|
|
90
129
|
return {
|
|
91
130
|
builtAt,
|
|
92
131
|
hash,
|
|
93
132
|
assets,
|
|
94
|
-
entrypoints,
|
|
95
133
|
chunks,
|
|
96
134
|
modules,
|
|
97
135
|
};
|
package/types/index.d.ts
CHANGED
|
@@ -1,28 +1,36 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StatsCompilation } from 'webpack';
|
|
2
2
|
interface BundleStatsOptions {
|
|
3
3
|
pathIgnorePattern?: string;
|
|
4
4
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export interface WebpackStatsFilteredAsset {
|
|
6
|
+
name: string;
|
|
7
|
+
size?: number;
|
|
8
8
|
}
|
|
9
|
-
interface WebpackStatsFilteredChunk {
|
|
9
|
+
export interface WebpackStatsFilteredChunk {
|
|
10
10
|
entry: boolean;
|
|
11
11
|
id: number | string;
|
|
12
12
|
initial: boolean;
|
|
13
|
-
files
|
|
14
|
-
names
|
|
13
|
+
files?: Array<string>;
|
|
14
|
+
names?: Array<string>;
|
|
15
15
|
}
|
|
16
|
-
interface
|
|
17
|
-
|
|
16
|
+
export interface WebpackStatsFilteredModule {
|
|
17
|
+
name: string;
|
|
18
|
+
size?: number;
|
|
19
|
+
chunks: Array<string | number>;
|
|
18
20
|
}
|
|
19
|
-
interface
|
|
20
|
-
|
|
21
|
+
export interface WebpackStatsFilteredConcatenatedModule {
|
|
22
|
+
name: string;
|
|
23
|
+
size?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface WebpackStatsFilteredRootModule extends WebpackStatsFilteredModule {
|
|
26
|
+
modules?: Array<WebpackStatsFilteredConcatenatedModule>;
|
|
27
|
+
}
|
|
28
|
+
export interface WebpackStatsFiltered {
|
|
29
|
+
builtAt?: number;
|
|
21
30
|
hash?: string;
|
|
22
31
|
assets?: Array<WebpackStatsFilteredAsset>;
|
|
23
|
-
entrypoints?: Record<string, WebpackStatsFileteredEntrypoint>;
|
|
24
32
|
chunks?: Array<WebpackStatsFilteredChunk>;
|
|
25
|
-
modules?: Array<
|
|
33
|
+
modules?: Array<WebpackStatsFilteredRootModule>;
|
|
26
34
|
}
|
|
27
35
|
declare const _default: (source: StatsCompilation, options?: BundleStatsOptions) => WebpackStatsFiltered;
|
|
28
36
|
export default _default;
|