@bundle-stats/cli-utils 4.2.3-beta.0 → 4.2.3-beta.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/README.md +35 -2
- package/lib/baseline.js +26 -16
- package/lib/baseline.js.map +1 -1
- package/lib/constants.js +1 -1
- package/lib/constants.js.map +1 -1
- package/lib/create-artifacts.js +2 -2
- package/lib/create-artifacts.js.map +1 -1
- package/lib/fs.js +19 -0
- package/lib/fs.js.map +1 -0
- package/lib/index.js +18 -7
- package/lib/index.js.map +1 -1
- package/lib/reports.js +51 -34
- package/lib/reports.js.map +1 -1
- package/lib/text.js +4 -3
- package/lib/text.js.map +1 -1
- package/lib-esm/baseline.js +20 -11
- package/lib-esm/baseline.js.map +1 -1
- package/lib-esm/create-artifacts.js.map +1 -1
- package/lib-esm/fs.js +12 -0
- package/lib-esm/fs.js.map +1 -0
- package/lib-esm/index.js +1 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/reports.js +33 -26
- package/lib-esm/reports.js.map +1 -1
- package/lib-esm/text.js +3 -2
- package/lib-esm/text.js.map +1 -1
- package/package.json +28 -18
- package/types/baseline.d.ts +6 -3
- package/types/fs.d.ts +1 -0
- package/types/index.d.ts +1 -0
- package/types/reports.d.ts +11 -4
- package/types/text.d.ts +3 -2
- package/CHANGELOG.md +0 -249
- package/__fixtures__/webpack-stats-baseline.json +0 -4349
- package/__fixtures__/webpack-stats-current.json +0 -4349
package/README.md
CHANGED
|
@@ -2,7 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@bundle-stats/cli-utils)
|
|
4
4
|
|
|
5
|
-
CLI utilities for
|
|
5
|
+
CLI utilities for [bundle-stats](https://github.com/relative-ci/bundle-stats)
|
|
6
|
+
|
|
7
|
+
## Related projects
|
|
8
|
+
|
|
9
|
+
### :cyclone: [relative-ci.com](https://relative-ci.com?utm_medium=bundle-stats-cli-utils)
|
|
10
|
+
|
|
11
|
+
#### Optimize your web app's performance with automated bundle stats analysis and monitoring.
|
|
12
|
+
|
|
13
|
+
- :crystal_ball: In-depth bundle stats analysis for every build
|
|
14
|
+
- :chart_with_upwards_trend: Monitor bundle stats changes and identify opportunities for optimizations
|
|
15
|
+
- :bell: [Rule based automated review flow](https://relative-ci.com/documentation/setup/configure/integrations/github-commit-status-review?utm_medium=bundle-stats-cli-utils), or get notified via [GitHub Pull Request comments](https://relative-ci.com/documentation/setup/configure/integrations/github-pull-request-comment?utm_medium=bundle-stats-cli-utils), [GitHub check reports](https://relative-ci.com/documentation/setup/configure/integrations/github-check-report?utm_medium=bundle-stats-cli-utils) and [Slack messages](https://relative-ci.com/documentation/setup/configure/integrations/slack-notification?utm_medium=bundle-stats-cli-utils)
|
|
16
|
+
- :wrench: Support for **webpack** and beta support for **Vite**/**Rollup**
|
|
17
|
+
- :hammer: Support for all major CI services(CircleCI, GitHub Actions, Gitlab CI, Jenkins, Travis CI)
|
|
18
|
+
- :nut_and_bolt: Support for **npm**, **yarn** and **pnpm**; support for monorepos
|
|
19
|
+
- :two_hearts: **Always free** for **Open Source**
|
|
20
|
+
|
|
21
|
+
[:rocket: Get started](https://relative-ci.com?utm_medium=bundle-stats-cli-utils)
|
|
22
|
+
|
|
23
|
+
### :first_quarter_moon: [relative-ci/compare](https://compare.relative-ci.com)
|
|
24
|
+
|
|
25
|
+
Standalone web application to compare Webpack/Lighthouse/Browsertime stats.
|
|
26
|
+
|
|
27
|
+
[Compare bundle stats](https://compare.relative-ci.com)
|
|
28
|
+
|
|
29
|
+
### :zap: [bundle-stats-action](https://github.com/vio/bundle-stats-action)
|
|
30
|
+
|
|
31
|
+
Github Action that generates [bundle-stats](https://github.com/relative-ci/bundle-stats) reports.
|
|
6
32
|
|
|
7
33
|
## Packages
|
|
8
34
|
|
|
@@ -16,7 +42,7 @@ CLI to generate bundle stats report.
|
|
|
16
42
|
|
|
17
43
|
[](https://www.npmjs.com/package/bundle-stats-webpack-plugin) [](https://www.npmjs.com/package/bundle-stats-webpack-plugin)
|
|
18
44
|
|
|
19
|
-
Webpack plugin to generate bundle stats report.
|
|
45
|
+
Webpack plugin to generate bundle stats report for webpack/rspack.
|
|
20
46
|
|
|
21
47
|
### [`gatsby-plugin-bundle-stats`](https://github.com/relative-ci/bundle-stats/tree/master/packages/gatsby-plugin)
|
|
22
48
|
|
|
@@ -29,3 +55,10 @@ Webpack plugin to generate bundle stats report.
|
|
|
29
55
|
[](https://www.npmjs.com/package/next-plugin-bundle-stats) [](https://www.npmjs.com/package/next-plugin-bundle-stats)
|
|
30
56
|
|
|
31
57
|
[Next.js](https://nextjs.org) plugin for [bundle-stats](https://github.com/relative-ci/bundle-stats/tree/master/packages/webpack-plugin).
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### [`rollup-plugin-bundle-stats`](https://github.com/relative-ci/bundle-stats/tree/master/packages/rollup-plugin)
|
|
61
|
+
|
|
62
|
+
[](https://www.npmjs.com/package/rollup-plugin-bundle-stats) [](https://www.npmjs.com/package/rollup-plugin-bundle-stats)
|
|
63
|
+
|
|
64
|
+
Rollup plugin to generate bundle stats report for vite/rolldown/rollup.
|
package/lib/baseline.js
CHANGED
|
@@ -3,25 +3,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.getBaselineRelativePath = exports.getBaselinePath = exports.BASELINE_STATS_BASE = exports.BASELINE_STATS_DIR = void 0;
|
|
7
|
+
exports.readBaseline = readBaseline;
|
|
8
|
+
exports.writeBaseline = writeBaseline;
|
|
7
9
|
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const
|
|
10
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
9
11
|
const find_cache_dir_1 = __importDefault(require("find-cache-dir"));
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (!
|
|
14
|
-
return path_1.default.join(BASELINE_STATS_DIR, BASELINE_STATS_BASE);
|
|
12
|
+
exports.BASELINE_STATS_DIR = (0, find_cache_dir_1.default)({ name: 'bundle-stats' }) || path_1.default.join(process.cwd(), './node_modules/.cache');
|
|
13
|
+
exports.BASELINE_STATS_BASE = 'baseline.json';
|
|
14
|
+
const getBaselinePath = (outputPath = process.cwd(), outputDir = '', filepath = '') => {
|
|
15
|
+
if (!filepath) {
|
|
16
|
+
return path_1.default.join(exports.BASELINE_STATS_DIR, exports.BASELINE_STATS_BASE);
|
|
15
17
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
if (path_1.default.isAbsolute(filepath)) {
|
|
19
|
+
return filepath;
|
|
20
|
+
}
|
|
21
|
+
return path_1.default.join(outputPath, outputDir, filepath);
|
|
22
|
+
};
|
|
23
|
+
exports.getBaselinePath = getBaselinePath;
|
|
24
|
+
const getBaselineRelativePath = (outputPath = process.cwd(), outputDir = '', filepath = '') => {
|
|
25
|
+
const absoluteFilepath = (0, exports.getBaselinePath)(outputPath, outputDir, filepath);
|
|
26
|
+
return path_1.default.relative(outputPath, absoluteFilepath);
|
|
27
|
+
};
|
|
28
|
+
exports.getBaselineRelativePath = getBaselineRelativePath;
|
|
29
|
+
async function readBaseline(baselineFilepath) {
|
|
30
|
+
const file = await promises_1.default.readFile(baselineFilepath, 'utf-8');
|
|
31
|
+
return JSON.parse(file);
|
|
21
32
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return (
|
|
33
|
+
async function writeBaseline(data, baselineFilepath) {
|
|
34
|
+
await promises_1.default.mkdir(path_1.default.dirname(baselineFilepath), { recursive: true });
|
|
35
|
+
return promises_1.default.writeFile(baselineFilepath, JSON.stringify(data), {});
|
|
25
36
|
}
|
|
26
|
-
exports.writeBaseline = writeBaseline;
|
|
27
37
|
//# sourceMappingURL=baseline.js.map
|
package/lib/baseline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":";;;;;;AAuCA,oCAGC;AAED,sCAGC;AA/CD,gDAAwB;AACxB,2DAA6B;AAC7B,oEAA0C;AAE7B,QAAA,kBAAkB,GAC7B,IAAA,wBAAY,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,IAAI,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;AACjF,QAAA,mBAAmB,GAAG,eAAe,CAAC;AAK5C,MAAM,eAAe,GAAG,CAC7B,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,EAC1B,SAAS,GAAG,EAAE,EACd,QAAQ,GAAG,EAAE,EACL,EAAE;IACV,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,cAAI,CAAC,IAAI,CAAC,0BAAkB,EAAE,2BAAmB,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAdW,QAAA,eAAe,mBAc1B;AAKK,MAAM,uBAAuB,GAAG,CACrC,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,EAC1B,SAAS,GAAG,EAAE,EACd,QAAQ,GAAG,EAAE,EACL,EAAE;IACV,MAAM,gBAAgB,GAAG,IAAA,uBAAe,EAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC1E,OAAO,cAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;AACrD,CAAC,CAAC;AAPW,QAAA,uBAAuB,2BAOlC;AAEK,KAAK,UAAU,YAAY,CAAC,gBAAwB;IACzD,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,gBAAwB;IACtE,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,OAAO,kBAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC"}
|
package/lib/constants.js
CHANGED
|
@@ -7,5 +7,5 @@ var OutputType;
|
|
|
7
7
|
(function (OutputType) {
|
|
8
8
|
OutputType["HTML"] = "html";
|
|
9
9
|
OutputType["JSON"] = "json";
|
|
10
|
-
})(OutputType
|
|
10
|
+
})(OutputType || (exports.OutputType = OutputType = {}));
|
|
11
11
|
//# sourceMappingURL=constants.js.map
|
package/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,cAAc,CAAC;AAEjC,QAAA,oBAAoB,GAAG,iCAAiC,CAAC;AAEtE,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,2BAAa,CAAA;AACf,CAAC,EAHW,UAAU,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,cAAc,CAAC;AAEjC,QAAA,oBAAoB,GAAG,iCAAiC,CAAC;AAEtE,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,2BAAa,CAAA;AACf,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB"}
|
package/lib/create-artifacts.js
CHANGED
|
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.createJSONArtifact = exports.createHTMLArtifact = void 0;
|
|
7
|
+
exports.createArtifacts = createArtifacts;
|
|
7
8
|
const html_templates_1 = __importDefault(require("@bundle-stats/html-templates"));
|
|
8
9
|
const constants_1 = require("./constants");
|
|
9
10
|
const createHTMLArtifact = (jobs) => {
|
|
@@ -36,5 +37,4 @@ function createArtifacts(jobs, report, options) {
|
|
|
36
37
|
}
|
|
37
38
|
return results;
|
|
38
39
|
}
|
|
39
|
-
exports.createArtifacts = createArtifacts;
|
|
40
40
|
//# sourceMappingURL=create-artifacts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-artifacts.js","sourceRoot":"","sources":["../src/create-artifacts.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"create-artifacts.js","sourceRoot":"","sources":["../src/create-artifacts.ts"],"names":[],"mappings":";;;;;;AA2CA,0CAsBC;AAhED,kFAAyD;AAEzD,2CAAgF;AAIzE,MAAM,kBAAkB,GAAqB,CAAC,IAAI,EAAE,EAAE;IAE3D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAG1F,IAAI,MAAM,GAAG,wBAAa,CAAC,OAAO,CAChC,gCAAoB,EACpB,6BAA6B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAC/D,CAAC;IAGF,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC;IAE5E,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,UAAU,SAAS,eAAe,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAlBW,QAAA,kBAAkB,sBAkB7B;AAEK,MAAM,kBAAkB,GAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B;AAcF,SAAgB,eAAe,CAC7B,IAAgB,EAChB,MAAW,EACX,OAAyB;IAEzB,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,sBAAU,CAAC,IAAI,CAAC,GAAG;YACzB,MAAM,EAAE,IAAA,0BAAkB,EAAC,IAAI,EAAE,MAAM,CAAC;YACxC,QAAQ,EAAE,GAAG,2BAAe,IAAI,sBAAU,CAAC,IAAI,EAAE;SAClD,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,sBAAU,CAAC,IAAI,CAAC,GAAG;YACzB,MAAM,EAAE,IAAA,0BAAkB,EAAC,IAAI,EAAE,MAAM,CAAC;YACxC,QAAQ,EAAE,GAAG,2BAAe,IAAI,sBAAU,CAAC,IAAI,EAAE;SAClD,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/lib/fs.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.readJSONStream = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const stream_json_1 = require("stream-json");
|
|
9
|
+
const stream_chain_1 = require("stream-chain");
|
|
10
|
+
const Assembler_1 = __importDefault(require("stream-json/Assembler"));
|
|
11
|
+
const readJSONStream = (filepath) => {
|
|
12
|
+
const pipeline = (0, stream_chain_1.chain)([(0, fs_1.createReadStream)(filepath), (0, stream_json_1.parser)()]);
|
|
13
|
+
const asm = Assembler_1.default.connectTo(pipeline);
|
|
14
|
+
return new Promise((fulfill) => {
|
|
15
|
+
asm.on('done', (data) => fulfill(data.current));
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
exports.readJSONStream = readJSONStream;
|
|
19
|
+
//# sourceMappingURL=fs.js.map
|
package/lib/fs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAsC;AACtC,6CAAqC;AACrC,+CAAqC;AACrC,sEAAwC;AAEjC,MAAM,cAAc,GAAG,CAAc,QAAgB,EAAc,EAAE;IAC1E,MAAM,QAAQ,GAAG,IAAA,oBAAK,EAAC,CAAC,IAAA,qBAAgB,EAAC,QAAQ,CAAC,EAAE,IAAA,oBAAM,GAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,mBAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB"}
|
package/lib/index.js
CHANGED
|
@@ -15,19 +15,30 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
26
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
37
|
};
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
39
|
exports.TEXT = void 0;
|
|
30
40
|
const T = __importStar(require("./text"));
|
|
41
|
+
__exportStar(require("./fs"), exports);
|
|
31
42
|
__exportStar(require("./baseline"), exports);
|
|
32
43
|
__exportStar(require("./create-artifacts"), exports);
|
|
33
44
|
__exportStar(require("./constants"), exports);
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA4B;AAE5B,uCAAqB;AACrB,6CAA2B;AAC3B,qDAAmC;AACnC,8CAA4B;AAC5B,4CAA0B;AAEb,QAAA,IAAI,GAAG,CAAC,CAAC"}
|
package/lib/reports.js
CHANGED
|
@@ -15,77 +15,94 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.generateReports =
|
|
39
|
+
exports.generateReports = void 0;
|
|
40
|
+
exports.getReportInfo = getReportInfo;
|
|
30
41
|
const path_1 = __importDefault(require("path"));
|
|
31
42
|
const merge_1 = __importDefault(require("lodash/merge"));
|
|
32
43
|
const utils_1 = require("@bundle-stats/utils");
|
|
33
44
|
const plugin_webpack_filter_1 = __importDefault(require("@bundle-stats/plugin-webpack-filter"));
|
|
34
|
-
const plugin_webpack_validate_1 = __importDefault(require("@bundle-stats/plugin-webpack-validate"));
|
|
35
45
|
const TEXT = __importStar(require("./text"));
|
|
36
46
|
const create_artifacts_1 = require("./create-artifacts");
|
|
37
47
|
const baseline_1 = require("./baseline");
|
|
38
48
|
function getReportInfo(report) {
|
|
39
49
|
return report?.insights?.webpack?.assetsSizeTotal?.data;
|
|
40
50
|
}
|
|
41
|
-
exports.getReportInfo = getReportInfo;
|
|
42
51
|
const DEFAULT_OPTIONS = {
|
|
43
|
-
compare: true,
|
|
44
|
-
baseline: Boolean(process.env.BUNDLE_STATS_BASELINE),
|
|
45
52
|
html: true,
|
|
46
53
|
json: false,
|
|
54
|
+
compare: true,
|
|
55
|
+
baseline: process.env.BUNDLE_STATS_BASELINE === 'true',
|
|
47
56
|
outDir: '',
|
|
48
57
|
silent: false,
|
|
49
58
|
};
|
|
50
59
|
const generateReports = async (source, options, pluginOptions = {}) => {
|
|
51
60
|
const { compare, baseline, html, json, outDir } = (0, merge_1.default)({}, DEFAULT_OPTIONS, options);
|
|
52
|
-
const {
|
|
61
|
+
const { outputPath = process.cwd(), logger = console } = pluginOptions;
|
|
53
62
|
const newAssets = {};
|
|
54
|
-
const invalid = (0, plugin_webpack_validate_1.default)(source);
|
|
55
|
-
if (invalid) {
|
|
56
|
-
logger.warn([invalid, invalidParamsUrl].join('\n'));
|
|
57
|
-
}
|
|
58
63
|
const data = (0, plugin_webpack_filter_1.default)(source);
|
|
59
64
|
if (!data.builtAt) {
|
|
60
65
|
data.builtAt = Date.now();
|
|
61
66
|
}
|
|
62
|
-
const
|
|
67
|
+
const baselineAbsolutePath = (0, baseline_1.getBaselinePath)(outputPath, outDir, options.baselineFilepath);
|
|
68
|
+
const baselinePath = (0, baseline_1.getBaselineRelativePath)(outputPath, outDir, baselineAbsolutePath);
|
|
63
69
|
let baselineStats = null;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const baselineStatsData = await (0, baseline_1.readBaseline)();
|
|
70
|
+
if (compare) {
|
|
71
|
+
try {
|
|
72
|
+
const baselineStatsData = await (0, baseline_1.readBaseline)(baselineAbsolutePath);
|
|
67
73
|
baselineStats = (0, plugin_webpack_filter_1.default)(baselineStatsData);
|
|
68
|
-
if (!options.silent)
|
|
69
|
-
logger.info(
|
|
74
|
+
if (!options.silent) {
|
|
75
|
+
logger.info(`${TEXT.BASELINE_READING} ${baselinePath}.`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
logger.warn(`${TEXT.BASELINE_READING} ${baselinePath}. ${TEXT.BASELINE_MISSING}`);
|
|
70
80
|
}
|
|
71
81
|
}
|
|
72
|
-
|
|
73
|
-
|
|
82
|
+
const sources = [{ webpack: data }];
|
|
83
|
+
if (baselineStats) {
|
|
84
|
+
sources.push({ webpack: baselineStats });
|
|
74
85
|
}
|
|
75
|
-
const jobs = (0, utils_1.createJobs)(
|
|
76
|
-
{ webpack: data },
|
|
77
|
-
...(compare && baselineStats ? [{ webpack: baselineStats }] : []),
|
|
78
|
-
]);
|
|
86
|
+
const jobs = (0, utils_1.createJobs)(sources);
|
|
79
87
|
const report = (0, utils_1.createReport)(jobs);
|
|
80
88
|
const artifacts = (0, create_artifacts_1.createArtifacts)(jobs, report, { html, json });
|
|
81
89
|
Object.values(artifacts).forEach(({ filename, output }) => {
|
|
82
|
-
const
|
|
83
|
-
newAssets[
|
|
90
|
+
const relativeFilepath = path_1.default.join(outDir, filename);
|
|
91
|
+
newAssets[relativeFilepath] = {
|
|
92
|
+
type: 'report',
|
|
93
|
+
source: output,
|
|
94
|
+
filepath: path_1.default.join(outputPath, relativeFilepath),
|
|
95
|
+
};
|
|
84
96
|
});
|
|
85
97
|
if (baseline) {
|
|
86
|
-
newAssets[
|
|
87
|
-
|
|
88
|
-
|
|
98
|
+
newAssets[baselinePath] = {
|
|
99
|
+
type: 'baseline',
|
|
100
|
+
source: JSON.stringify(data),
|
|
101
|
+
filepath: baselineAbsolutePath,
|
|
102
|
+
};
|
|
103
|
+
if (!options.silent) {
|
|
104
|
+
logger.info(`${TEXT.BASELINE_WRITING} ${baselinePath}`);
|
|
105
|
+
}
|
|
89
106
|
}
|
|
90
107
|
const info = getReportInfo(report);
|
|
91
108
|
if (info && !options.silent) {
|
package/lib/reports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reports.js","sourceRoot":"","sources":["../src/reports.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reports.js","sourceRoot":"","sources":["../src/reports.ts"],"names":[],"mappings":"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"}
|
package/lib/text.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CLI_NO_BASELINE = exports.CLI_MULTIPLE_STATS = exports.CLI_NO_COMPARE_MODE = exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
3
|
+
exports.CLI_NO_BASELINE = exports.CLI_MULTIPLE_STATS = exports.CLI_NO_COMPARE_MODE = exports.BASELINE_WRITING = exports.BASELINE_READING = exports.BASELINE_MISSING = void 0;
|
|
4
|
+
exports.BASELINE_MISSING = 'Baseline stats file is missing, see "baseline" option.';
|
|
5
|
+
exports.BASELINE_READING = 'Reading baseline data from';
|
|
6
|
+
exports.BASELINE_WRITING = 'Writing baseline data to';
|
|
6
7
|
exports.CLI_NO_COMPARE_MODE = 'Not in compare mode (see --compare).';
|
|
7
8
|
exports.CLI_MULTIPLE_STATS = 'Multiple stat files already set.';
|
|
8
9
|
exports.CLI_NO_BASELINE = 'Not a baseline job (see --baseline).';
|
package/lib/text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":";;;AAAa,QAAA,
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,wDAAwD,CAAC;AAC5E,QAAA,gBAAgB,GAAG,4BAA4B,CAAC;AAChD,QAAA,gBAAgB,GAAG,0BAA0B,CAAC;AAE9C,QAAA,mBAAmB,GAAG,sCAAsC,CAAC;AAC7D,QAAA,kBAAkB,GAAG,kCAAkC,CAAC;AACxD,QAAA,eAAe,GAAG,sCAAsC,CAAC"}
|
package/lib-esm/baseline.js
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import
|
|
2
|
+
import fs from 'fs/promises';
|
|
3
3
|
import findCacheDir from 'find-cache-dir';
|
|
4
|
-
const BASELINE_STATS_DIR = findCacheDir({ name: 'bundle-stats' }) || path.join(process.cwd(), './node_modules/.cache');
|
|
5
|
-
const BASELINE_STATS_BASE = 'baseline.json';
|
|
6
|
-
export
|
|
7
|
-
if (!
|
|
4
|
+
export const BASELINE_STATS_DIR = findCacheDir({ name: 'bundle-stats' }) || path.join(process.cwd(), './node_modules/.cache');
|
|
5
|
+
export const BASELINE_STATS_BASE = 'baseline.json';
|
|
6
|
+
export const getBaselinePath = (outputPath = process.cwd(), outputDir = '', filepath = '') => {
|
|
7
|
+
if (!filepath) {
|
|
8
8
|
return path.join(BASELINE_STATS_DIR, BASELINE_STATS_BASE);
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return
|
|
10
|
+
if (path.isAbsolute(filepath)) {
|
|
11
|
+
return filepath;
|
|
12
|
+
}
|
|
13
|
+
return path.join(outputPath, outputDir, filepath);
|
|
14
|
+
};
|
|
15
|
+
export const getBaselineRelativePath = (outputPath = process.cwd(), outputDir = '', filepath = '') => {
|
|
16
|
+
const absoluteFilepath = getBaselinePath(outputPath, outputDir, filepath);
|
|
17
|
+
return path.relative(outputPath, absoluteFilepath);
|
|
18
|
+
};
|
|
19
|
+
export async function readBaseline(baselineFilepath) {
|
|
20
|
+
const file = await fs.readFile(baselineFilepath, 'utf-8');
|
|
21
|
+
return JSON.parse(file);
|
|
14
22
|
}
|
|
15
|
-
export async function writeBaseline(data) {
|
|
16
|
-
|
|
23
|
+
export async function writeBaseline(data, baselineFilepath) {
|
|
24
|
+
await fs.mkdir(path.dirname(baselineFilepath), { recursive: true });
|
|
25
|
+
return fs.writeFile(baselineFilepath, JSON.stringify(data), {});
|
|
17
26
|
}
|
|
18
27
|
//# sourceMappingURL=baseline.js.map
|
package/lib-esm/baseline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,MAAM,kBAAkB,GAC7B,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;AAC9F,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAKnD,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,EAC1B,SAAS,GAAG,EAAE,EACd,QAAQ,GAAG,EAAE,EACL,EAAE;IACV,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,EAC1B,SAAS,GAAG,EAAE,EACd,QAAQ,GAAG,EAAE,EACL,EAAE;IACV,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,gBAAwB;IACzD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,gBAAwB;IACtE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,OAAO,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-artifacts.js","sourceRoot":"","sources":["../src/create-artifacts.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIhF,MAAM,CAAC,MAAM,kBAAkB,GAAqB,CAAC,IAAI,EAAE,EAAE;;IAE3D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAG1F,IAAI,MAAM,GAAG,aAAa,CAAC,OAAO,CAChC,oBAAoB,EACpB,6BAA6B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAC/D,CAAC;IAGF,MAAM,SAAS,GAAG,MAAA,MAAA,MAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,QAAQ,0CAAE,OAAO,0CAAE,eAAe,0CAAE,IAAI,0CAAE,IAAI,CAAC;IAE5E,IAAI,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"create-artifacts.js","sourceRoot":"","sources":["../src/create-artifacts.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIhF,MAAM,CAAC,MAAM,kBAAkB,GAAqB,CAAC,IAAI,EAAE,EAAE;;IAE3D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAG1F,IAAI,MAAM,GAAG,aAAa,CAAC,OAAO,CAChC,oBAAoB,EACpB,6BAA6B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAC/D,CAAC;IAGF,MAAM,SAAS,GAAG,MAAA,MAAA,MAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,QAAQ,0CAAE,OAAO,0CAAE,eAAe,0CAAE,IAAI,0CAAE,IAAI,CAAC;IAE5E,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,UAAU,SAAS,eAAe,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAcF,MAAM,UAAU,eAAe,CAC7B,IAAgB,EAChB,MAAW,EACX,OAAyB;IAEzB,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;YACzB,MAAM,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;YACxC,QAAQ,EAAE,GAAG,eAAe,IAAI,UAAU,CAAC,IAAI,EAAE;SAClD,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;YACzB,MAAM,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;YACxC,QAAQ,EAAE,GAAG,eAAe,IAAI,UAAU,CAAC,IAAI,EAAE;SAClD,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/lib-esm/fs.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createReadStream } from 'fs';
|
|
2
|
+
import { parser } from 'stream-json';
|
|
3
|
+
import { chain } from 'stream-chain';
|
|
4
|
+
import Asm from 'stream-json/Assembler';
|
|
5
|
+
export const readJSONStream = (filepath) => {
|
|
6
|
+
const pipeline = chain([createReadStream(filepath), parser()]);
|
|
7
|
+
const asm = Asm.connectTo(pipeline);
|
|
8
|
+
return new Promise((fulfill) => {
|
|
9
|
+
asm.on('done', (data) => fulfill(data.current));
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,GAAG,MAAM,uBAAuB,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAc,QAAgB,EAAc,EAAE;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
package/lib-esm/index.js
CHANGED
package/lib-esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAE1B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAE1B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC"}
|
package/lib-esm/reports.js
CHANGED
|
@@ -2,61 +2,68 @@ import path from 'path';
|
|
|
2
2
|
import merge from 'lodash/merge';
|
|
3
3
|
import { createJobs, createReport } from '@bundle-stats/utils';
|
|
4
4
|
import filter from '@bundle-stats/plugin-webpack-filter';
|
|
5
|
-
import validate from '@bundle-stats/plugin-webpack-validate';
|
|
6
5
|
import * as TEXT from './text';
|
|
7
6
|
import { createArtifacts } from './create-artifacts';
|
|
8
|
-
import {
|
|
7
|
+
import { getBaselinePath, getBaselineRelativePath, readBaseline } from './baseline';
|
|
9
8
|
export function getReportInfo(report) {
|
|
10
9
|
var _a, _b, _c;
|
|
11
10
|
return (_c = (_b = (_a = report === null || report === void 0 ? void 0 : report.insights) === null || _a === void 0 ? void 0 : _a.webpack) === null || _b === void 0 ? void 0 : _b.assetsSizeTotal) === null || _c === void 0 ? void 0 : _c.data;
|
|
12
11
|
}
|
|
13
12
|
const DEFAULT_OPTIONS = {
|
|
14
|
-
compare: true,
|
|
15
|
-
baseline: Boolean(process.env.BUNDLE_STATS_BASELINE),
|
|
16
13
|
html: true,
|
|
17
14
|
json: false,
|
|
15
|
+
compare: true,
|
|
16
|
+
baseline: process.env.BUNDLE_STATS_BASELINE === 'true',
|
|
18
17
|
outDir: '',
|
|
19
18
|
silent: false,
|
|
20
19
|
};
|
|
21
20
|
export const generateReports = async (source, options, pluginOptions = {}) => {
|
|
22
21
|
const { compare, baseline, html, json, outDir } = merge({}, DEFAULT_OPTIONS, options);
|
|
23
|
-
const {
|
|
22
|
+
const { outputPath = process.cwd(), logger = console } = pluginOptions;
|
|
24
23
|
const newAssets = {};
|
|
25
|
-
const invalid = validate(source);
|
|
26
|
-
if (invalid) {
|
|
27
|
-
logger.warn([invalid, invalidParamsUrl].join('\n'));
|
|
28
|
-
}
|
|
29
24
|
const data = filter(source);
|
|
30
25
|
if (!data.builtAt) {
|
|
31
26
|
data.builtAt = Date.now();
|
|
32
27
|
}
|
|
33
|
-
const
|
|
28
|
+
const baselineAbsolutePath = getBaselinePath(outputPath, outDir, options.baselineFilepath);
|
|
29
|
+
const baselinePath = getBaselineRelativePath(outputPath, outDir, baselineAbsolutePath);
|
|
34
30
|
let baselineStats = null;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const baselineStatsData = await readBaseline();
|
|
31
|
+
if (compare) {
|
|
32
|
+
try {
|
|
33
|
+
const baselineStatsData = await readBaseline(baselineAbsolutePath);
|
|
38
34
|
baselineStats = filter(baselineStatsData);
|
|
39
|
-
if (!options.silent)
|
|
40
|
-
logger.info(
|
|
35
|
+
if (!options.silent) {
|
|
36
|
+
logger.info(`${TEXT.BASELINE_READING} ${baselinePath}.`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
logger.warn(`${TEXT.BASELINE_READING} ${baselinePath}. ${TEXT.BASELINE_MISSING}`);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
const sources = [{ webpack: data }];
|
|
44
|
+
if (baselineStats) {
|
|
45
|
+
sources.push({ webpack: baselineStats });
|
|
45
46
|
}
|
|
46
|
-
const jobs = createJobs(
|
|
47
|
-
{ webpack: data },
|
|
48
|
-
...(compare && baselineStats ? [{ webpack: baselineStats }] : []),
|
|
49
|
-
]);
|
|
47
|
+
const jobs = createJobs(sources);
|
|
50
48
|
const report = createReport(jobs);
|
|
51
49
|
const artifacts = createArtifacts(jobs, report, { html, json });
|
|
52
50
|
Object.values(artifacts).forEach(({ filename, output }) => {
|
|
53
|
-
const
|
|
54
|
-
newAssets[
|
|
51
|
+
const relativeFilepath = path.join(outDir, filename);
|
|
52
|
+
newAssets[relativeFilepath] = {
|
|
53
|
+
type: 'report',
|
|
54
|
+
source: output,
|
|
55
|
+
filepath: path.join(outputPath, relativeFilepath),
|
|
56
|
+
};
|
|
55
57
|
});
|
|
56
58
|
if (baseline) {
|
|
57
|
-
newAssets[
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
newAssets[baselinePath] = {
|
|
60
|
+
type: 'baseline',
|
|
61
|
+
source: JSON.stringify(data),
|
|
62
|
+
filepath: baselineAbsolutePath,
|
|
63
|
+
};
|
|
64
|
+
if (!options.silent) {
|
|
65
|
+
logger.info(`${TEXT.BASELINE_WRITING} ${baselinePath}`);
|
|
66
|
+
}
|
|
60
67
|
}
|
|
61
68
|
const info = getReportInfo(report);
|
|
62
69
|
if (info && !options.silent) {
|
package/lib-esm/reports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reports.js","sourceRoot":"","sources":["../src/reports.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"reports.js","sourceRoot":"","sources":["../src/reports.ts"],"names":[],"mappings":"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"}
|
package/lib-esm/text.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export const
|
|
2
|
-
export const
|
|
1
|
+
export const BASELINE_MISSING = 'Baseline stats file is missing, see "baseline" option.';
|
|
2
|
+
export const BASELINE_READING = 'Reading baseline data from';
|
|
3
|
+
export const BASELINE_WRITING = 'Writing baseline data to';
|
|
3
4
|
export const CLI_NO_COMPARE_MODE = 'Not in compare mode (see --compare).';
|
|
4
5
|
export const CLI_MULTIPLE_STATS = 'Multiple stat files already set.';
|
|
5
6
|
export const CLI_NO_BASELINE = 'Not a baseline job (see --baseline).';
|