@bundle-stats/utils 3.2.2 → 3.3.0-alpha.0
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/CHANGELOG.md +18 -0
- package/lib/jobs/create-job.js +2 -2
- package/lib/jobs/create-job.js.map +1 -1
- package/lib/jobs/create-jobs.js +2 -2
- package/lib/jobs/create-jobs.js.map +1 -1
- package/lib/webpack/constants.js +26 -12
- package/lib/webpack/constants.js.map +1 -1
- package/lib/webpack/extract/assets-size-total-insight.js +4 -4
- package/lib/webpack/extract/assets-size-total-insight.js.map +1 -1
- package/lib/webpack/extract/assets-size.js +3 -4
- package/lib/webpack/extract/assets-size.js.map +1 -1
- package/lib/webpack/extract/budgets-insights.js +39 -0
- package/lib/webpack/extract/budgets-insights.js.map +1 -0
- package/lib/webpack/extract/index.js +3 -1
- package/lib/webpack/extract/index.js.map +1 -1
- package/lib/webpack/metrics.js +27 -16
- package/lib/webpack/metrics.js.map +1 -1
- package/lib-esm/jobs/create-job.js +2 -2
- package/lib-esm/jobs/create-job.js.map +1 -1
- package/lib-esm/jobs/create-jobs.js +2 -2
- package/lib-esm/jobs/create-jobs.js.map +1 -1
- package/lib-esm/webpack/constants.js +25 -11
- package/lib-esm/webpack/constants.js.map +1 -1
- package/lib-esm/webpack/extract/assets-size-total-insight.js +4 -4
- package/lib-esm/webpack/extract/assets-size-total-insight.js.map +1 -1
- package/lib-esm/webpack/extract/assets-size.js +3 -4
- package/lib-esm/webpack/extract/assets-size.js.map +1 -1
- package/lib-esm/webpack/extract/budgets-insights.js +33 -0
- package/lib-esm/webpack/extract/budgets-insights.js.map +1 -0
- package/lib-esm/webpack/extract/index.js +3 -1
- package/lib-esm/webpack/extract/index.js.map +1 -1
- package/lib-esm/webpack/metrics.js +27 -16
- package/lib-esm/webpack/metrics.js.map +1 -1
- package/package.json +2 -2
- package/src/jobs/create-job.js +2 -2
- package/src/jobs/create-jobs.js +2 -2
- package/src/webpack/{constants.js → constants.ts} +28 -15
- package/src/webpack/extract/assets-size-total-insight.js +4 -4
- package/src/webpack/extract/assets-size.js +3 -5
- package/src/webpack/extract/budgets-insights.ts +73 -0
- package/src/webpack/extract/index.js +10 -5
- package/src/webpack/{metrics.js → metrics.ts} +27 -16
- package/types/jobs/create-job.d.ts +1 -1
- package/types/jobs/create-jobs.d.ts +1 -1
- package/types/webpack/constants.d.ts +31 -9
- package/types/webpack/extract/budgets-insights.d.ts +22 -0
- package/types/webpack/extract/index.d.ts +1 -1
- package/types/webpack/metrics.d.ts +102 -131
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgets-insights.js","sourceRoot":"","sources":["../../../src/webpack/extract/budgets-insights.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA2BzC,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,CAAU,EACV,oBAAyB,EACzB,EAAW,EACX,UAAmB,EAAE;IAErB,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAE5C,IAAI,CAAC,cAAc,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,QAAQ,GAAmC,EAAE,CAAC;IAEpD,cAAc,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QACtC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;QACpE,MAAM,YAAY,GAAG,GAAG,CAAC,oBAAoB,EAAE,WAAW,cAAc,QAAQ,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;SACR;QAED,MAAM,iBAAiB,GAAG,YAAY,GAAG,WAAW,CAAC;QAErD,MAAM,aAAa,GAAG;YACpB,YAAY;YACZ,WAAW;YACX,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB;SACvE,CAAC;QAEF,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;SACtC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -11,6 +11,7 @@ import { extractModulesCount } from './modules-count';
|
|
|
11
11
|
import { extractModulesPackages } from './modules-packages';
|
|
12
12
|
import { extractModulesPackagesCount } from './modules-packages-count';
|
|
13
13
|
import { extractModulesPackagesDuplicate } from './modules-packages-duplicate';
|
|
14
|
+
import extractBudgetsInsights from './budgets-insights';
|
|
14
15
|
const extractFns = [
|
|
15
16
|
extractAssets,
|
|
16
17
|
extractAssetsCacheInvalidation,
|
|
@@ -24,6 +25,7 @@ const extractFns = [
|
|
|
24
25
|
extractModulesPackages,
|
|
25
26
|
extractModulesPackagesCount,
|
|
26
27
|
extractModulesPackagesDuplicate,
|
|
28
|
+
extractBudgetsInsights,
|
|
27
29
|
];
|
|
28
|
-
export const extract = (webpackStats, baseline) => extractFns.reduce((agg, extractFn) => merge({}, agg, extractFn(webpackStats, agg, baseline)), {});
|
|
30
|
+
export const extract = (webpackStats, baseline, options) => extractFns.reduce((agg, extractFn) => merge({}, agg, extractFn(webpackStats, agg, baseline, options)), {});
|
|
29
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webpack/extract/index.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webpack/extract/index.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,sBAAsB,MAAM,oBAAoB,CAAC;AAExD,MAAM,UAAU,GAAG;IACjB,aAAa;IACb,8BAA8B;IAC9B,uBAAuB;IACvB,kBAAkB;IAClB,iBAAiB;IACjB,6BAA6B;IAC7B,WAAW;IACX,cAAc;IACd,mBAAmB;IACnB,sBAAsB;IACtB,2BAA2B;IAC3B,+BAA+B;IAC/B,sBAAsB;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAC3E,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,CACvB,EAAE,EACF,GAAG,EACH,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAChD,EACD,EAAE,CACH,CAAC"}
|
|
@@ -1,59 +1,63 @@
|
|
|
1
1
|
import { METRIC_TYPE_FILE_SIZE, METRIC_TYPE_NUMERIC, METRIC_TYPE_PERCENTAGE, } from '../config/metrics';
|
|
2
|
+
import { MetricId, SizeByTypeMetricId } from './constants';
|
|
2
3
|
export const metrics = {
|
|
3
|
-
|
|
4
|
+
[MetricId.BundleSize]: {
|
|
4
5
|
label: 'Bundle Size',
|
|
5
6
|
description: 'Sum of all assets emitted by webpack.',
|
|
6
7
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
7
8
|
type: METRIC_TYPE_FILE_SIZE,
|
|
9
|
+
biggerIsBetter: false,
|
|
8
10
|
},
|
|
9
|
-
|
|
11
|
+
[MetricId.TotalInitialSizeJS]: {
|
|
10
12
|
label: 'Initial JS',
|
|
11
13
|
description: 'Sum of all JavaScript assets that are labeled as initial(eg: vendor.js, app.js).',
|
|
12
14
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
13
15
|
type: METRIC_TYPE_FILE_SIZE,
|
|
16
|
+
biggerIsBetter: false,
|
|
14
17
|
},
|
|
15
|
-
|
|
18
|
+
[MetricId.TotalInitialSizeCSS]: {
|
|
16
19
|
label: 'Initial CSS',
|
|
17
20
|
description: 'Sum of all CSS assets that are labeled as initial(eg: vendor.css, app.css).',
|
|
18
21
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
19
22
|
type: METRIC_TYPE_FILE_SIZE,
|
|
23
|
+
biggerIsBetter: false,
|
|
20
24
|
},
|
|
21
|
-
|
|
25
|
+
[MetricId.CacheInvalidation]: {
|
|
22
26
|
label: 'Cache Invalidation',
|
|
23
27
|
description: 'Ratio between the total changed assets and Bundle Size.',
|
|
24
28
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
25
29
|
type: METRIC_TYPE_PERCENTAGE,
|
|
26
30
|
biggerIsBetter: false,
|
|
27
31
|
},
|
|
28
|
-
|
|
32
|
+
[MetricId.ChunkCount]: {
|
|
29
33
|
label: 'Chunks',
|
|
30
34
|
description: 'Total number of chunks generated by webpack.',
|
|
31
35
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
32
36
|
type: METRIC_TYPE_NUMERIC,
|
|
33
37
|
biggerIsBetter: false,
|
|
34
38
|
},
|
|
35
|
-
|
|
39
|
+
[MetricId.AssetCount]: {
|
|
36
40
|
label: 'Assets',
|
|
37
41
|
description: 'Total number of assets emitted by webpack.',
|
|
38
42
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
39
43
|
type: METRIC_TYPE_NUMERIC,
|
|
40
44
|
biggerIsBetter: false,
|
|
41
45
|
},
|
|
42
|
-
|
|
46
|
+
[MetricId.ModuleName]: {
|
|
43
47
|
label: 'Modules',
|
|
44
48
|
description: 'Total number of modules bundled by webpack.',
|
|
45
49
|
url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
|
|
46
50
|
type: METRIC_TYPE_NUMERIC,
|
|
47
51
|
biggerIsBetter: false,
|
|
48
52
|
},
|
|
49
|
-
|
|
53
|
+
[MetricId.PackageCount]: {
|
|
50
54
|
label: 'Packages',
|
|
51
55
|
description: 'Total number of packages bundled by webpack.',
|
|
52
56
|
url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
|
|
53
57
|
type: METRIC_TYPE_NUMERIC,
|
|
54
58
|
biggerIsBetter: false,
|
|
55
59
|
},
|
|
56
|
-
|
|
60
|
+
[MetricId.DuplicatePackagesCount]: {
|
|
57
61
|
label: 'Duplicate Packages',
|
|
58
62
|
description: 'Total number of packages that are duplicated.',
|
|
59
63
|
url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
|
|
@@ -61,33 +65,40 @@ export const metrics = {
|
|
|
61
65
|
biggerIsBetter: false,
|
|
62
66
|
},
|
|
63
67
|
sizes: {
|
|
64
|
-
|
|
68
|
+
[SizeByTypeMetricId.JS]: {
|
|
65
69
|
label: 'JS',
|
|
66
70
|
type: METRIC_TYPE_FILE_SIZE,
|
|
71
|
+
biggerIsBetter: false,
|
|
67
72
|
},
|
|
68
|
-
|
|
73
|
+
[SizeByTypeMetricId.CSS]: {
|
|
69
74
|
label: 'CSS',
|
|
70
75
|
type: METRIC_TYPE_FILE_SIZE,
|
|
76
|
+
biggerIsBetter: false,
|
|
71
77
|
},
|
|
72
|
-
|
|
78
|
+
[SizeByTypeMetricId.IMG]: {
|
|
73
79
|
label: 'IMG',
|
|
74
80
|
type: METRIC_TYPE_FILE_SIZE,
|
|
81
|
+
biggerIsBetter: false,
|
|
75
82
|
},
|
|
76
|
-
|
|
83
|
+
[SizeByTypeMetricId.Media]: {
|
|
77
84
|
label: 'Media',
|
|
78
85
|
type: METRIC_TYPE_FILE_SIZE,
|
|
86
|
+
biggerIsBetter: false,
|
|
79
87
|
},
|
|
80
|
-
|
|
88
|
+
[SizeByTypeMetricId.Font]: {
|
|
81
89
|
label: 'Fonts',
|
|
82
90
|
type: METRIC_TYPE_FILE_SIZE,
|
|
91
|
+
biggerIsBetter: false,
|
|
83
92
|
},
|
|
84
|
-
|
|
93
|
+
[SizeByTypeMetricId.HTML]: {
|
|
85
94
|
label: 'HTML',
|
|
86
95
|
type: METRIC_TYPE_FILE_SIZE,
|
|
96
|
+
biggerIsBetter: false,
|
|
87
97
|
},
|
|
88
|
-
|
|
98
|
+
[SizeByTypeMetricId.Other]: {
|
|
89
99
|
label: 'Other',
|
|
90
100
|
type: METRIC_TYPE_FILE_SIZE,
|
|
101
|
+
biggerIsBetter: false,
|
|
91
102
|
},
|
|
92
103
|
},
|
|
93
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bundle-stats/utils",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0-alpha.0",
|
|
4
4
|
"description": "BundleStats utils",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"core-js": "^3.16.2",
|
|
59
59
|
"lodash": "^4.17.21"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "7c7e664296ad7aed38a6972f4421d754098119eb"
|
|
62
62
|
}
|
package/src/jobs/create-job.js
CHANGED
|
@@ -14,7 +14,7 @@ const GENERIC_PROPS = ['meta', 'insights', 'metrics'];
|
|
|
14
14
|
/*
|
|
15
15
|
* Create job from stats
|
|
16
16
|
*/
|
|
17
|
-
export const createJob = (source, baseline) => SOURCE_PATHS.reduce((agg, sourcePath) => {
|
|
17
|
+
export const createJob = (source, baseline, options = {}) => SOURCE_PATHS.reduce((agg, sourcePath) => {
|
|
18
18
|
const rawData = get(source, sourcePath);
|
|
19
19
|
|
|
20
20
|
if (!rawData) {
|
|
@@ -27,7 +27,7 @@ export const createJob = (source, baseline) => SOURCE_PATHS.reduce((agg, sourceP
|
|
|
27
27
|
return agg;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
const extractedData = sourceModule.extract(rawData, baseline);
|
|
30
|
+
const extractedData = sourceModule.extract(rawData, baseline, options[sourcePath]);
|
|
31
31
|
const summary = createSummary(
|
|
32
32
|
SOURCE_FNS[sourcePath].SUMMARY_METRIC_PATHS,
|
|
33
33
|
get(baseline, `metrics.${sourcePath}`, {}),
|
package/src/jobs/create-jobs.js
CHANGED
|
@@ -6,9 +6,9 @@ import { createJob } from './create-job';
|
|
|
6
6
|
/*
|
|
7
7
|
* Create jobs from sources
|
|
8
8
|
*/
|
|
9
|
-
export const createJobs = (sources) => {
|
|
9
|
+
export const createJobs = (sources, options) => {
|
|
10
10
|
const jobs = reverse([...sources]).reduce((agg, source, idx) => {
|
|
11
|
-
const job = createJob(source, last(agg));
|
|
11
|
+
const job = createJob(source, last(agg), options);
|
|
12
12
|
const internalBuildNumber = job.internalBuildNumber || idx + 1;
|
|
13
13
|
const label = `Job #${internalBuildNumber}`;
|
|
14
14
|
|
|
@@ -12,17 +12,32 @@ export const SECTIONS = [
|
|
|
12
12
|
SECTION_WEBPACK_PACKAGES,
|
|
13
13
|
];
|
|
14
14
|
|
|
15
|
-
export
|
|
16
|
-
'totalSizeByTypeALL',
|
|
17
|
-
'totalInitialSizeJS',
|
|
18
|
-
'totalInitialSizeCSS',
|
|
19
|
-
'cacheInvalidation',
|
|
20
|
-
'moduleCount',
|
|
21
|
-
'chunkCount',
|
|
22
|
-
'assetCount',
|
|
23
|
-
'packageCount',
|
|
24
|
-
'duplicatePackagesCount',
|
|
25
|
-
|
|
15
|
+
export enum MetricId {
|
|
16
|
+
BundleSize = 'totalSizeByTypeALL',
|
|
17
|
+
TotalInitialSizeJS = 'totalInitialSizeJS',
|
|
18
|
+
TotalInitialSizeCSS = 'totalInitialSizeCSS',
|
|
19
|
+
CacheInvalidation = 'cacheInvalidation',
|
|
20
|
+
ModuleName = 'moduleCount',
|
|
21
|
+
ChunkCount = 'chunkCount',
|
|
22
|
+
AssetCount = 'assetCount',
|
|
23
|
+
PackageCount = 'packageCount',
|
|
24
|
+
DuplicatePackagesCount = 'duplicatePackagesCount',
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const SIZE_BY_TYPE_METRIC_ID_ALL = 'ALL';
|
|
28
|
+
export const SIZE_BY_TYPE_METRIC_ID_PREFIX = 'totalSizeByType';
|
|
29
|
+
|
|
30
|
+
export enum SizeByTypeMetricId {
|
|
31
|
+
JS = 'totalSizeByTypeJS',
|
|
32
|
+
CSS = 'totalSizeByTypeCSS',
|
|
33
|
+
IMG = 'totalSizeByTypeIMG',
|
|
34
|
+
Media = 'totalSizeByTypeMEDIA',
|
|
35
|
+
Font = 'totalSizeByTypeFONT',
|
|
36
|
+
HTML = 'totalSizeByTypeHTML',
|
|
37
|
+
Other = 'totalSizeByTypeOTHER',
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const SUMMARY_METRIC_PATHS = Object.values(MetricId);
|
|
26
41
|
|
|
27
42
|
const PACKAGE_PREFIX = /(?:node_modules|~)(?:\/\.pnpm)?/;
|
|
28
43
|
const PACKAGE_SLUG = /[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*/;
|
|
@@ -30,7 +45,7 @@ const VERSION = /@[\w|\-|_|.]+/;
|
|
|
30
45
|
|
|
31
46
|
// Extract package paths from module path
|
|
32
47
|
// https://regex101.com/r/22Leep/6
|
|
33
|
-
/* eslint-disable prettier/prettier */
|
|
48
|
+
/* eslint-disable prettier/prettier, @typescript-eslint/indent */
|
|
34
49
|
export const MODULE_PATH_PACKAGES = new RegExp([
|
|
35
50
|
// match dependency directory (eg: `node_modules/`, `node_modules/.pnpm/`)
|
|
36
51
|
`(?:${PACKAGE_PREFIX.source}/)`,
|
|
@@ -54,11 +69,9 @@ export const MODULE_PATH_PACKAGES = new RegExp([
|
|
|
54
69
|
')*',
|
|
55
70
|
'/',
|
|
56
71
|
].join(''), 'g');
|
|
57
|
-
/* eslint-enable prettier/prettier */
|
|
58
72
|
|
|
59
73
|
// Extract package name from package path
|
|
60
74
|
// https://regex101.com/r/tTlU0W/6
|
|
61
|
-
/* eslint-disable prettier/prettier */
|
|
62
75
|
export const PACKAGE_PATH_NAME = new RegExp([
|
|
63
76
|
`(?:${PACKAGE_PREFIX.source}/)`,
|
|
64
77
|
// match dependency
|
|
@@ -80,4 +93,4 @@ export const PACKAGE_PATH_NAME = new RegExp([
|
|
|
80
93
|
')*',
|
|
81
94
|
'/',
|
|
82
95
|
].join(''), 'g');
|
|
83
|
-
/* eslint-enable prettier/prettier */
|
|
96
|
+
/* eslint-enable prettier/prettier, @typescript-eslint/indent */
|
|
@@ -4,21 +4,21 @@ import template from 'lodash/template';
|
|
|
4
4
|
import { INSIGHT_INFO } from '../../config/insights';
|
|
5
5
|
import { getMetricRunInfo } from '../../utils/metrics';
|
|
6
6
|
import { getMetricType } from '../utils';
|
|
7
|
+
import { MetricId } from '../constants';
|
|
7
8
|
|
|
8
9
|
const INFO_TEMPLATE = template(
|
|
9
10
|
'<%= metric %> — <%= displayValue %> (<%= displayDeltaPercentage %>).',
|
|
10
11
|
);
|
|
11
|
-
const METRIC_NAME = 'totalSizeByTypeALL';
|
|
12
12
|
|
|
13
13
|
export const extractAssetsSizeTotalInsight = (
|
|
14
14
|
webpackStats,
|
|
15
15
|
currentExtractedData,
|
|
16
16
|
baselineBundleStats,
|
|
17
17
|
) => {
|
|
18
|
-
const currentValue = get(currentExtractedData, ['metrics',
|
|
19
|
-
const baselineValue = get(baselineBundleStats, ['metrics', 'webpack',
|
|
18
|
+
const currentValue = get(currentExtractedData, ['metrics', MetricId.BundleSize, 'value'], 0);
|
|
19
|
+
const baselineValue = get(baselineBundleStats, ['metrics', 'webpack', MetricId.BundleSize, 'value'], 0);
|
|
20
20
|
|
|
21
|
-
const metric = getMetricType(
|
|
21
|
+
const metric = getMetricType(MetricId.BundleSize);
|
|
22
22
|
const info = getMetricRunInfo(metric, currentValue, baselineValue);
|
|
23
23
|
const { displayDeltaPercentage, displayValue } = info;
|
|
24
24
|
|
|
@@ -4,11 +4,9 @@ import sum from 'lodash/sum';
|
|
|
4
4
|
|
|
5
5
|
import { FILE_TYPE_CSS, FILE_TYPE_JS, FILE_TYPES } from '../../config/file-types';
|
|
6
6
|
import { getFileType } from '../../utils/file-types';
|
|
7
|
+
import { SIZE_BY_TYPE_METRIC_ID_PREFIX, SIZE_BY_TYPE_METRIC_ID_ALL } from '../constants';
|
|
7
8
|
|
|
8
|
-
const
|
|
9
|
-
const METRIC_NAME_PREFIX = 'totalSizeByType';
|
|
10
|
-
|
|
11
|
-
const getMetricName = (fileType) => `${METRIC_NAME_PREFIX}${fileType}`;
|
|
9
|
+
const getMetricName = (fileType) => `${SIZE_BY_TYPE_METRIC_ID_PREFIX}${fileType}`;
|
|
12
10
|
|
|
13
11
|
const generateInitialSizeByType = () => FILE_TYPES.reduce((accumulator, fileType) => ({
|
|
14
12
|
...accumulator,
|
|
@@ -52,7 +50,7 @@ export const extractAssetsSize = (webpackStats, currentExtractedData) => {
|
|
|
52
50
|
|
|
53
51
|
const sizes = calculateTotalByType(bundleAssets);
|
|
54
52
|
const generic = {
|
|
55
|
-
[getMetricName(
|
|
53
|
+
[getMetricName(SIZE_BY_TYPE_METRIC_ID_ALL)]: {
|
|
56
54
|
value: sum(map(bundleAssets, 'value')),
|
|
57
55
|
},
|
|
58
56
|
...calculateInitialTotals(bundleAssets),
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import get from 'lodash/get';
|
|
2
|
+
|
|
3
|
+
import { getMetricType } from '../utils';
|
|
4
|
+
|
|
5
|
+
interface OptionBudgetMetric {
|
|
6
|
+
metric: string;
|
|
7
|
+
value: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Options {
|
|
11
|
+
budgets?: Array<OptionBudgetMetric>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface BudgetInsight {
|
|
15
|
+
currentValue: number;
|
|
16
|
+
budgetValue: number;
|
|
17
|
+
failed: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface BudgetsInsights {
|
|
21
|
+
[metricId: string]: BudgetInsight;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface ExtractBudgetsInsights {
|
|
25
|
+
insights: {
|
|
26
|
+
budgets: BudgetsInsights;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export default function extractBudgetsInsights(
|
|
31
|
+
_: unknown,
|
|
32
|
+
currentExtractedData: any,
|
|
33
|
+
__: unknown,
|
|
34
|
+
options: Options = {}
|
|
35
|
+
): ExtractBudgetsInsights | null {
|
|
36
|
+
const { budgets: budgetsOptions } = options;
|
|
37
|
+
|
|
38
|
+
if (!budgetsOptions) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const insights: Array<[string, BudgetInsight]> = [];
|
|
43
|
+
|
|
44
|
+
budgetsOptions.forEach((budgetOption) => {
|
|
45
|
+
const { metric: budgetMetricId, value: budgetValue } = budgetOption;
|
|
46
|
+
const currentValue = get(currentExtractedData, `metrics.${budgetMetricId}.value`);
|
|
47
|
+
const metric = getMetricType(budgetMetricId);
|
|
48
|
+
|
|
49
|
+
if (!currentValue) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const isValueOverBudget = currentValue > budgetValue;
|
|
54
|
+
|
|
55
|
+
const budgetInsight = {
|
|
56
|
+
currentValue,
|
|
57
|
+
budgetValue,
|
|
58
|
+
failed: metric.biggerIsBetter ? !isValueOverBudget : isValueOverBudget,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
insights.push([budgetMetricId, budgetInsight]);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
if (insights.length === 0) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
insights: {
|
|
70
|
+
budgets: Object.fromEntries(insights),
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
@@ -12,6 +12,7 @@ import { extractModulesCount } from './modules-count';
|
|
|
12
12
|
import { extractModulesPackages } from './modules-packages';
|
|
13
13
|
import { extractModulesPackagesCount } from './modules-packages-count';
|
|
14
14
|
import { extractModulesPackagesDuplicate } from './modules-packages-duplicate';
|
|
15
|
+
import extractBudgetsInsights from './budgets-insights';
|
|
15
16
|
|
|
16
17
|
const extractFns = [
|
|
17
18
|
extractAssets,
|
|
@@ -26,10 +27,14 @@ const extractFns = [
|
|
|
26
27
|
extractModulesPackages,
|
|
27
28
|
extractModulesPackagesCount,
|
|
28
29
|
extractModulesPackagesDuplicate,
|
|
30
|
+
extractBudgetsInsights,
|
|
29
31
|
];
|
|
30
32
|
|
|
31
|
-
export const extract = (webpackStats, baseline) => extractFns.reduce(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
export const extract = (webpackStats, baseline, options) => extractFns.reduce(
|
|
34
|
+
(agg, extractFn) => merge(
|
|
35
|
+
{},
|
|
36
|
+
agg,
|
|
37
|
+
extractFn(webpackStats, agg, baseline, options),
|
|
38
|
+
),
|
|
39
|
+
{}
|
|
40
|
+
);
|
|
@@ -3,62 +3,66 @@ import {
|
|
|
3
3
|
METRIC_TYPE_NUMERIC,
|
|
4
4
|
METRIC_TYPE_PERCENTAGE,
|
|
5
5
|
} from '../config/metrics';
|
|
6
|
+
import { MetricId, SizeByTypeMetricId } from './constants';
|
|
6
7
|
|
|
7
8
|
export const metrics = {
|
|
8
|
-
|
|
9
|
+
[MetricId.BundleSize]: {
|
|
9
10
|
label: 'Bundle Size',
|
|
10
11
|
description: 'Sum of all assets emitted by webpack.',
|
|
11
12
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
12
13
|
type: METRIC_TYPE_FILE_SIZE,
|
|
14
|
+
biggerIsBetter: false,
|
|
13
15
|
},
|
|
14
|
-
|
|
16
|
+
[MetricId.TotalInitialSizeJS]: {
|
|
15
17
|
label: 'Initial JS',
|
|
16
18
|
description: 'Sum of all JavaScript assets that are labeled as initial(eg: vendor.js, app.js).',
|
|
17
19
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
18
20
|
type: METRIC_TYPE_FILE_SIZE,
|
|
21
|
+
biggerIsBetter: false,
|
|
19
22
|
},
|
|
20
|
-
|
|
23
|
+
[MetricId.TotalInitialSizeCSS]: {
|
|
21
24
|
label: 'Initial CSS',
|
|
22
25
|
description: 'Sum of all CSS assets that are labeled as initial(eg: vendor.css, app.css).',
|
|
23
26
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
24
27
|
type: METRIC_TYPE_FILE_SIZE,
|
|
28
|
+
biggerIsBetter: false,
|
|
25
29
|
},
|
|
26
|
-
|
|
30
|
+
[MetricId.CacheInvalidation]: {
|
|
27
31
|
label: 'Cache Invalidation',
|
|
28
32
|
description: 'Ratio between the total changed assets and Bundle Size.',
|
|
29
33
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
30
34
|
type: METRIC_TYPE_PERCENTAGE,
|
|
31
35
|
biggerIsBetter: false,
|
|
32
36
|
},
|
|
33
|
-
|
|
37
|
+
[MetricId.ChunkCount]: {
|
|
34
38
|
label: 'Chunks',
|
|
35
39
|
description: 'Total number of chunks generated by webpack.',
|
|
36
40
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
37
41
|
type: METRIC_TYPE_NUMERIC,
|
|
38
42
|
biggerIsBetter: false,
|
|
39
43
|
},
|
|
40
|
-
|
|
44
|
+
[MetricId.AssetCount]: {
|
|
41
45
|
label: 'Assets',
|
|
42
46
|
description: 'Total number of assets emitted by webpack.',
|
|
43
47
|
url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
|
|
44
48
|
type: METRIC_TYPE_NUMERIC,
|
|
45
49
|
biggerIsBetter: false,
|
|
46
50
|
},
|
|
47
|
-
|
|
51
|
+
[MetricId.ModuleName]: {
|
|
48
52
|
label: 'Modules',
|
|
49
53
|
description: 'Total number of modules bundled by webpack.',
|
|
50
54
|
url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
|
|
51
55
|
type: METRIC_TYPE_NUMERIC,
|
|
52
56
|
biggerIsBetter: false,
|
|
53
57
|
},
|
|
54
|
-
|
|
58
|
+
[MetricId.PackageCount]: {
|
|
55
59
|
label: 'Packages',
|
|
56
60
|
description: 'Total number of packages bundled by webpack.',
|
|
57
61
|
url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
|
|
58
62
|
type: METRIC_TYPE_NUMERIC,
|
|
59
63
|
biggerIsBetter: false,
|
|
60
64
|
},
|
|
61
|
-
|
|
65
|
+
[MetricId.DuplicatePackagesCount]: {
|
|
62
66
|
label: 'Duplicate Packages',
|
|
63
67
|
description: 'Total number of packages that are duplicated.',
|
|
64
68
|
url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
|
|
@@ -66,33 +70,40 @@ export const metrics = {
|
|
|
66
70
|
biggerIsBetter: false,
|
|
67
71
|
},
|
|
68
72
|
sizes: {
|
|
69
|
-
|
|
73
|
+
[SizeByTypeMetricId.JS]: {
|
|
70
74
|
label: 'JS',
|
|
71
75
|
type: METRIC_TYPE_FILE_SIZE,
|
|
76
|
+
biggerIsBetter: false,
|
|
72
77
|
},
|
|
73
|
-
|
|
78
|
+
[SizeByTypeMetricId.CSS]: {
|
|
74
79
|
label: 'CSS',
|
|
75
80
|
type: METRIC_TYPE_FILE_SIZE,
|
|
81
|
+
biggerIsBetter: false,
|
|
76
82
|
},
|
|
77
|
-
|
|
83
|
+
[SizeByTypeMetricId.IMG]: {
|
|
78
84
|
label: 'IMG',
|
|
79
85
|
type: METRIC_TYPE_FILE_SIZE,
|
|
86
|
+
biggerIsBetter: false,
|
|
80
87
|
},
|
|
81
|
-
|
|
88
|
+
[SizeByTypeMetricId.Media]: {
|
|
82
89
|
label: 'Media',
|
|
83
90
|
type: METRIC_TYPE_FILE_SIZE,
|
|
91
|
+
biggerIsBetter: false,
|
|
84
92
|
},
|
|
85
|
-
|
|
93
|
+
[SizeByTypeMetricId.Font]: {
|
|
86
94
|
label: 'Fonts',
|
|
87
95
|
type: METRIC_TYPE_FILE_SIZE,
|
|
96
|
+
biggerIsBetter: false,
|
|
88
97
|
},
|
|
89
|
-
|
|
98
|
+
[SizeByTypeMetricId.HTML]: {
|
|
90
99
|
label: 'HTML',
|
|
91
100
|
type: METRIC_TYPE_FILE_SIZE,
|
|
101
|
+
biggerIsBetter: false,
|
|
92
102
|
},
|
|
93
|
-
|
|
103
|
+
[SizeByTypeMetricId.Other]: {
|
|
94
104
|
label: 'Other',
|
|
95
105
|
type: METRIC_TYPE_FILE_SIZE,
|
|
106
|
+
biggerIsBetter: false,
|
|
96
107
|
},
|
|
97
108
|
},
|
|
98
109
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function createJob(source: any, baseline: any): {};
|
|
1
|
+
export function createJob(source: any, baseline: any, options?: {}): {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function createJobs(sources: any): any;
|
|
1
|
+
export function createJobs(sources: any, options: any): any;
|
|
@@ -1,9 +1,31 @@
|
|
|
1
|
-
export const SECTION_WEBPACK_STATS
|
|
2
|
-
export const SECTION_WEBPACK_SIZES
|
|
3
|
-
export const SECTION_WEBPACK_ASSETS
|
|
4
|
-
export const SECTION_WEBPACK_MODULES
|
|
5
|
-
export const SECTION_WEBPACK_PACKAGES
|
|
6
|
-
export const SECTIONS: string[];
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
export declare const SECTION_WEBPACK_STATS = "stats";
|
|
2
|
+
export declare const SECTION_WEBPACK_SIZES = "sizes";
|
|
3
|
+
export declare const SECTION_WEBPACK_ASSETS = "assets";
|
|
4
|
+
export declare const SECTION_WEBPACK_MODULES = "modules";
|
|
5
|
+
export declare const SECTION_WEBPACK_PACKAGES = "packages";
|
|
6
|
+
export declare const SECTIONS: string[];
|
|
7
|
+
export declare enum MetricId {
|
|
8
|
+
BundleSize = "totalSizeByTypeALL",
|
|
9
|
+
TotalInitialSizeJS = "totalInitialSizeJS",
|
|
10
|
+
TotalInitialSizeCSS = "totalInitialSizeCSS",
|
|
11
|
+
CacheInvalidation = "cacheInvalidation",
|
|
12
|
+
ModuleName = "moduleCount",
|
|
13
|
+
ChunkCount = "chunkCount",
|
|
14
|
+
AssetCount = "assetCount",
|
|
15
|
+
PackageCount = "packageCount",
|
|
16
|
+
DuplicatePackagesCount = "duplicatePackagesCount"
|
|
17
|
+
}
|
|
18
|
+
export declare const SIZE_BY_TYPE_METRIC_ID_ALL = "ALL";
|
|
19
|
+
export declare const SIZE_BY_TYPE_METRIC_ID_PREFIX = "totalSizeByType";
|
|
20
|
+
export declare enum SizeByTypeMetricId {
|
|
21
|
+
JS = "totalSizeByTypeJS",
|
|
22
|
+
CSS = "totalSizeByTypeCSS",
|
|
23
|
+
IMG = "totalSizeByTypeIMG",
|
|
24
|
+
Media = "totalSizeByTypeMEDIA",
|
|
25
|
+
Font = "totalSizeByTypeFONT",
|
|
26
|
+
HTML = "totalSizeByTypeHTML",
|
|
27
|
+
Other = "totalSizeByTypeOTHER"
|
|
28
|
+
}
|
|
29
|
+
export declare const SUMMARY_METRIC_PATHS: MetricId[];
|
|
30
|
+
export declare const MODULE_PATH_PACKAGES: RegExp;
|
|
31
|
+
export declare const PACKAGE_PATH_NAME: RegExp;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface OptionBudgetMetric {
|
|
2
|
+
metric: string;
|
|
3
|
+
value: number;
|
|
4
|
+
}
|
|
5
|
+
interface Options {
|
|
6
|
+
budgets?: Array<OptionBudgetMetric>;
|
|
7
|
+
}
|
|
8
|
+
interface BudgetInsight {
|
|
9
|
+
currentValue: number;
|
|
10
|
+
budgetValue: number;
|
|
11
|
+
failed: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface BudgetsInsights {
|
|
14
|
+
[metricId: string]: BudgetInsight;
|
|
15
|
+
}
|
|
16
|
+
interface ExtractBudgetsInsights {
|
|
17
|
+
insights: {
|
|
18
|
+
budgets: BudgetsInsights;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export default function extractBudgetsInsights(_: unknown, currentExtractedData: any, __: unknown, options?: Options): ExtractBudgetsInsights | null;
|
|
22
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function extract(webpackStats: any, baseline: any): {};
|
|
1
|
+
export function extract(webpackStats: any, baseline: any, options: any): {};
|