bundle-stats 4.22.1-beta.0 → 4.22.2-beta.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bundle-stats",
3
- "version": "4.22.1-beta.0",
3
+ "version": "4.22.2-beta.0",
4
4
  "description": "In-depth bundle analyzer for webpack(bundle size, assets, modules, packages)",
5
5
  "bin": {
6
6
  "bundle-stats": "bin/index.js"
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "scripts": {
17
17
  "copy-fixtures": "./scripts/copy-fixtures.sh",
18
- "build": "npm run clean && npm run copy-fixtures && tsc --rootDir ./src --project tsconfig.json --outDir ./lib",
18
+ "build": "npm run clean && npm run copy-fixtures && tsdown",
19
19
  "clean": "rimraf lib",
20
20
  "lint": "eslint",
21
21
  "serve-demo": "./bin/index.js --demo && http-server dist",
@@ -51,27 +51,29 @@
51
51
  },
52
52
  "homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/cli#readme",
53
53
  "dependencies": {
54
- "@bundle-stats/cli-utils": "^4.22.1-beta.0",
55
- "@bundle-stats/plugin-webpack-filter": "^4.22.1-beta.0",
56
- "@bundle-stats/plugin-webpack-validate": "^4.22.1-beta.0",
57
- "@bundle-stats/utils": "^4.22.1-beta.0",
54
+ "@bundle-stats/cli-utils": "4.22.2-beta.0",
55
+ "@bundle-stats/plugin-webpack-filter": "4.22.2-beta.0",
56
+ "@bundle-stats/plugin-webpack-validate": "4.22.2-beta.0",
57
+ "@bundle-stats/utils": "4.22.2-beta.0",
58
58
  "boxen": "^5.0.0",
59
59
  "core-js": "^3.21.0",
60
- "fs-extra": "^11.0.0",
60
+ "fs-extra": "^11.3.5",
61
61
  "listr2": "^5.0.1",
62
62
  "lodash": "^4.18.1",
63
- "update-notifier": "^5.0.0",
64
63
  "yargs": "^17.4.0"
65
64
  },
66
65
  "devDependencies": {
67
- "@playwright/test": "1.59.1",
66
+ "@playwright/test": "1.60.0",
68
67
  "@types/fs-extra": "^11.0.0",
69
68
  "@types/listr": "^0.14.4",
69
+ "@types/update-notifier": "6.0.8",
70
70
  "@types/yargs": "^17.0.20",
71
71
  "http-server": "14.1.1",
72
72
  "jest": "29.7.0",
73
73
  "rimraf": "6.1.3",
74
- "typescript": "5.9.3"
74
+ "tsdown": "0.22.0",
75
+ "typescript": "5.9.3",
76
+ "update-notifier": "7.3.1"
75
77
  },
76
- "gitHead": "ad389156633f0cdbfba80d41bd679e2cdd9f23b6"
78
+ "gitHead": "94aa29230add5d8375b72627363b0b4447da3ab2"
77
79
  }
@@ -0,0 +1,18 @@
1
+ import { defineConfig } from 'tsdown';
2
+
3
+ export default defineConfig({
4
+ outDir: 'lib',
5
+ entry: './src/index.ts',
6
+ format: 'cjs',
7
+ outputOptions: {
8
+ entryFileNames: '[name].js',
9
+ },
10
+ deps: {
11
+ alwaysBundle: ['update-notifier'],
12
+ },
13
+ dts: false,
14
+ unbundle: false,
15
+ hash: false,
16
+ minify: false,
17
+ sourcemap: false,
18
+ });
package/lib/cli.js DELETED
@@ -1,86 +0,0 @@
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.default = cli;
7
- const path_1 = __importDefault(require("path"));
8
- const yargs_1 = __importDefault(require("yargs"));
9
- const update_notifier_1 = __importDefault(require("update-notifier"));
10
- const run_1 = __importDefault(require("./run"));
11
- const DEFAULT_OUTPUT_DIR = './dist';
12
- const WEEK_IN_MS = 1000 * 60 * 60 * 24 * 7;
13
- async function cli(pkg) {
14
- const notifier = (0, update_notifier_1.default)({ pkg, updateCheckInterval: WEEK_IN_MS });
15
- if (notifier.update) {
16
- notifier.notify();
17
- }
18
- const { demo } = yargs_1.default.options({ demo: { type: 'boolean', default: false } }).parseSync();
19
- if (demo) {
20
- await (0, run_1.default)({
21
- baseline: false,
22
- compare: false,
23
- html: true,
24
- json: true,
25
- outDir: DEFAULT_OUTPUT_DIR,
26
- artifactFilepaths: [
27
- path_1.default.resolve(__dirname, '../__fixtures__/webpack-stats.current.json'),
28
- path_1.default.resolve(__dirname, '../__fixtures__/webpack-stats.baseline.json'),
29
- ],
30
- });
31
- return;
32
- }
33
- const args = yargs_1.default
34
- .usage('Usage: $0 OPTIONS [STATS_FILE]...')
35
- .demandCommand(1, 'Webpack stats file path is required.')
36
- .option('out-dir', {
37
- description: 'Output directory',
38
- type: 'string',
39
- default: DEFAULT_OUTPUT_DIR,
40
- })
41
- .option('compare', {
42
- description: 'Use local saved stats for comparison',
43
- type: 'boolean',
44
- default: true,
45
- })
46
- .option('baseline', {
47
- description: 'Save current stats as baseline',
48
- type: 'boolean',
49
- default: false,
50
- })
51
- .option('baseline-filepath', {
52
- description: 'Baseline filepath, default: node_modules/.cache/bundle-stats/baseline.json',
53
- type: 'string',
54
- default: undefined,
55
- })
56
- .option('html', {
57
- description: 'Save HTML report',
58
- type: 'boolean',
59
- default: true,
60
- })
61
- .option('json', {
62
- description: 'Save JSON data',
63
- type: 'boolean',
64
- default: false,
65
- })
66
- .option('demo', {
67
- description: 'Generate demo reports',
68
- type: 'boolean',
69
- default: false,
70
- })
71
- .alias('d', 'out-dir')
72
- .alias('h', 'help')
73
- .alias('v', 'version')
74
- .help()
75
- .parseSync();
76
- await (0, run_1.default)({
77
- outDir: args.outDir,
78
- compare: args.compare,
79
- baseline: args.baseline,
80
- baselineFilepath: args.baselineFilepath,
81
- html: args.html,
82
- json: args.json,
83
- artifactFilepaths: args._,
84
- });
85
- }
86
- //# sourceMappingURL=cli.js.map
package/lib/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,6BAAuC;AAA9B,2GAAA,OAAO,OAAO;AACvB,6BAAuC;AAA9B,2GAAA,OAAO,OAAO"}
package/lib/locales.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "WEBPACK_CONFIGURATION_URL": "https://github.com/relative-ci/bundle-stats/tree/master/packages/cli#webpack-configuration"
3
- }
package/lib/run.js DELETED
@@ -1,127 +0,0 @@
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.default = run;
7
- const path_1 = __importDefault(require("path"));
8
- const fs_extra_1 = require("fs-extra");
9
- const listr2_1 = require("listr2");
10
- const lodash_1 = require("lodash");
11
- const boxen_1 = __importDefault(require("boxen"));
12
- require("@bundle-stats/utils/lib/polyfills");
13
- const utils_1 = require("@bundle-stats/utils");
14
- const plugin_webpack_filter_1 = __importDefault(require("@bundle-stats/plugin-webpack-filter"));
15
- const plugin_webpack_validate_1 = __importDefault(require("@bundle-stats/plugin-webpack-validate"));
16
- const cli_utils_1 = require("@bundle-stats/cli-utils");
17
- const locales_json_1 = __importDefault(require("./locales.json"));
18
- const REPORT_INFO_COLORS = {
19
- CHANGE: 'blue',
20
- HIGH_NEGATIVE: 'red',
21
- NEGATIVE: 'red',
22
- LOW_NEGATIVE: 'yellow',
23
- NO_CHANGE: 'gray',
24
- LOW_POSITIVE: 'green',
25
- POSITIVE: 'green',
26
- HIGH_POSITIVE: 'green',
27
- };
28
- async function run(options) {
29
- const { baseline, baselineFilepath, compare, html, json, outDir, artifactFilepaths } = options;
30
- const baselineAbsolutePath = (0, cli_utils_1.getBaselinePath)(process.cwd(), outDir, baselineFilepath);
31
- const baselinePath = (0, cli_utils_1.getBaselineRelativePath)(process.cwd(), '', baselineAbsolutePath);
32
- const tasks = new listr2_1.Listr([
33
- {
34
- title: 'Read Webpack stats files',
35
- task: async (ctx) => {
36
- const sources = await Promise.all(artifactFilepaths.map((filepath) => (0, cli_utils_1.readJSONStream)(filepath)));
37
- sources.forEach((source, index) => {
38
- const invalid = (0, plugin_webpack_validate_1.default)(source);
39
- if (invalid) {
40
- throw new Error(`${invalid}\n${locales_json_1.default.WEBPACK_CONFIGURATION_URL}\nFilepath: ${artifactFilepaths[index]}`);
41
- }
42
- });
43
- ctx.sources = sources.map((source) => ({ webpack: (0, plugin_webpack_filter_1.default)(source) }));
44
- },
45
- },
46
- {
47
- title: 'Read baseline data',
48
- task: async (ctx, task) => {
49
- task.title = `${task.title} (${baselinePath})`;
50
- ctx.sources = ctx.sources.concat([{ webpack: (0, plugin_webpack_filter_1.default)(ctx.baselineStats) }]);
51
- },
52
- skip: async (ctx) => {
53
- if (!compare) {
54
- return cli_utils_1.TEXT.CLI_NO_COMPARE_MODE;
55
- }
56
- if (artifactFilepaths.length !== 1) {
57
- return cli_utils_1.TEXT.CLI_MULTIPLE_STATS;
58
- }
59
- let baselineStats = {};
60
- try {
61
- baselineStats = await (0, cli_utils_1.readBaseline)(baselineAbsolutePath);
62
- ctx.baselineStats = baselineStats;
63
- }
64
- catch (err) {
65
- return cli_utils_1.TEXT.BASELINE_MISSING;
66
- }
67
- return false;
68
- },
69
- },
70
- {
71
- title: 'Write baseline data',
72
- task: (ctx, task) => {
73
- const stats = (0, lodash_1.get)(ctx, 'sources[0]webpack');
74
- const filteredWebpackStats = (0, plugin_webpack_filter_1.default)(stats);
75
- return (0, cli_utils_1.writeBaseline)(filteredWebpackStats, baselineAbsolutePath).then(() => {
76
- task.title = `${task.title} (${baselinePath})`;
77
- });
78
- },
79
- skip: () => !baseline && cli_utils_1.TEXT.CLI_NO_BASELINE,
80
- },
81
- {
82
- title: 'Process data',
83
- task: (ctx) => {
84
- ctx.jobs = (0, utils_1.createJobs)(ctx.sources);
85
- ctx.report = (0, utils_1.createReport)(ctx.jobs);
86
- },
87
- },
88
- {
89
- title: 'Generate reports',
90
- task: async (ctx) => {
91
- ctx.artifacts = await (0, cli_utils_1.createArtifacts)(ctx.jobs, ctx.report, { html, json });
92
- },
93
- },
94
- {
95
- title: 'Save reports',
96
- task: (ctx) => new listr2_1.Listr(Object.values(ctx.artifacts).map(({ filename, output }) => ({
97
- title: filename,
98
- task: async () => {
99
- const filepath = path_1.default.join(outDir, filename);
100
- await (0, fs_extra_1.outputFile)(filepath, output);
101
- ctx.output = [...(ctx.output ? ctx.output : []), filepath];
102
- },
103
- })), { concurrent: true }),
104
- },
105
- ]);
106
- let result = {};
107
- try {
108
- result = await tasks.run();
109
- }
110
- catch (err) {
111
- console.error(err.message);
112
- }
113
- const { output, report } = result;
114
- const reportInfo = (0, cli_utils_1.getReportInfo)(report);
115
- if (reportInfo?.text) {
116
- const infoBox = (0, boxen_1.default)(reportInfo.text, {
117
- padding: 1,
118
- borderColor: reportInfo.info?.deltaType
119
- ? REPORT_INFO_COLORS[reportInfo.info.deltaType]
120
- : REPORT_INFO_COLORS.NO_CHANGE,
121
- });
122
- console.log(`\n${infoBox}`);
123
- }
124
- console.log('\nArtifacts:');
125
- output?.map((reportPath) => console.log(`- ${reportPath}`));
126
- }
127
- //# sourceMappingURL=run.js.map
package/lib/run.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}