@perfonext/build-mcp 0.2.0 → 0.4.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/README.md +42 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/parser/analysis.d.ts +7 -1
- package/dist/parser/analysis.d.ts.map +1 -1
- package/dist/parser/analysis.js +202 -0
- package/dist/parser/analysis.js.map +1 -1
- package/dist/parser/types.d.ts +88 -0
- package/dist/parser/types.d.ts.map +1 -1
- package/dist/parser/webpack-stats.d.ts +30 -0
- package/dist/parser/webpack-stats.d.ts.map +1 -0
- package/dist/parser/webpack-stats.js +353 -0
- package/dist/parser/webpack-stats.js.map +1 -0
- package/dist/store.d.ts +3 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +7 -0
- package/dist/store.js.map +1 -1
- package/dist/tools/explain-shared-chunks.d.ts +3 -0
- package/dist/tools/explain-shared-chunks.d.ts.map +1 -0
- package/dist/tools/explain-shared-chunks.js +45 -0
- package/dist/tools/explain-shared-chunks.js.map +1 -0
- package/dist/tools/find-duplicates.d.ts +3 -0
- package/dist/tools/find-duplicates.d.ts.map +1 -0
- package/dist/tools/find-duplicates.js +43 -0
- package/dist/tools/find-duplicates.js.map +1 -0
- package/dist/tools/how-to-collect-stats.d.ts +3 -0
- package/dist/tools/how-to-collect-stats.d.ts.map +1 -0
- package/dist/tools/how-to-collect-stats.js +137 -0
- package/dist/tools/how-to-collect-stats.js.map +1 -0
- package/dist/tools/load-webpack-stats.d.ts +3 -0
- package/dist/tools/load-webpack-stats.d.ts.map +1 -0
- package/dist/tools/load-webpack-stats.js +51 -0
- package/dist/tools/load-webpack-stats.js.map +1 -0
- package/dist/tools/suggest-optimizations.d.ts +3 -0
- package/dist/tools/suggest-optimizations.d.ts.map +1 -0
- package/dist/tools/suggest-optimizations.js +46 -0
- package/dist/tools/suggest-optimizations.js.map +1 -0
- package/dist/tools/trace-import.d.ts +3 -0
- package/dist/tools/trace-import.d.ts.map +1 -0
- package/dist/tools/trace-import.js +41 -0
- package/dist/tools/trace-import.js.map +1 -0
- package/dist/tools/webpack-shared.d.ts +21 -0
- package/dist/tools/webpack-shared.d.ts.map +1 -0
- package/dist/tools/webpack-shared.js +33 -0
- package/dist/tools/webpack-shared.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,17 +12,27 @@
|
|
|
12
12
|
- compares two builds and explains which routes and chunks drove bundle growth, with
|
|
13
13
|
severity-ranked, evidence-backed fix suggestions
|
|
14
14
|
- matches chunks across builds even though Next.js fingerprints filenames with content hashes
|
|
15
|
+
- traces why a given module or npm package is bundled (import chain entry → module) when an
|
|
16
|
+
optional webpack stats file is collected
|
|
17
|
+
- finds npm packages duplicated across chunks and explains what dominates shared chunks
|
|
18
|
+
- aggregates all of the above into severity-ranked, evidence-backed optimization suggestions tied to
|
|
19
|
+
concrete Next.js actions
|
|
15
20
|
- keeps loaded build snapshots in memory so an MCP client can inspect them without re-reading the same build
|
|
16
21
|
|
|
17
22
|
## Inputs
|
|
18
23
|
|
|
19
|
-
The
|
|
24
|
+
The core tools read build artifacts developers already have after running `next build`:
|
|
20
25
|
|
|
21
26
|
- `.next/build-manifest.json`
|
|
22
27
|
- `.next/prerender-manifest.json` when present
|
|
23
28
|
- `.next/app-build-manifest.json` when present
|
|
24
29
|
- optional captured `next build` output text to derive build duration
|
|
25
30
|
|
|
31
|
+
Import-level attribution (`trace_import`, `find_duplicates`, `explain_shared_chunks`) and the
|
|
32
|
+
stats-enriched suggestions from `suggest_optimizations` additionally need a webpack module-stats file
|
|
33
|
+
at `.next/stats.json`. A stock `next build` does not emit one; `how_to_collect_stats` returns the
|
|
34
|
+
recipe to generate it. The manifest tools above never read it, so they work with or without it.
|
|
35
|
+
|
|
26
36
|
## Tools
|
|
27
37
|
|
|
28
38
|
| Tool | Description |
|
|
@@ -32,11 +42,37 @@ The MVP reads build artifacts developers already have after running `next build`
|
|
|
32
42
|
| `get_shared_chunks` | Rank shared chunks by size and show which routes depend on them |
|
|
33
43
|
| `compare_builds` | Compare a baseline and current build snapshot to show which routes and chunks grew or shrank |
|
|
34
44
|
| `explain_growth` | Severity-rank which routes and chunks drove bundle growth between two builds, with evidence-backed fix suggestions |
|
|
45
|
+
| `how_to_collect_stats` | Return the recipe (manual) or an action plan (automatic) to generate `.next/stats.json` |
|
|
46
|
+
| `load_webpack_stats` | Parse `.next/stats.json` and link it to a loaded build; required before `trace_import` |
|
|
47
|
+
| `trace_import` | Explain why a module or npm package is bundled by walking its import chain to the entry |
|
|
48
|
+
| `find_duplicates` | Rank npm packages whose code is emitted into more than one chunk, by wasted bytes |
|
|
49
|
+
| `explain_shared_chunks` | Show which packages and app code dominate the shared chunks loaded by many routes |
|
|
50
|
+
| `suggest_optimizations` | Aggregate route, chunk, and webpack-stats evidence into severity-ranked, evidence-backed fix suggestions |
|
|
35
51
|
|
|
36
52
|
The output stays machine-readable and includes raw byte counts so Copilot can explain regressions, prioritise fixes, and suggest concrete dependency or import-level follow-up.
|
|
37
53
|
|
|
38
54
|
Because Next.js content-hashes emitted filenames (`framework-<hash>.js`, and CSS files named purely by hash), `compare_builds` and `explain_growth` match chunks across builds by a hash-normalized identity. This prevents a rehashed-but-unchanged chunk from being misreported as removed-and-recreated, while still flagging genuinely new chunks.
|
|
39
55
|
|
|
56
|
+
### Deep bundle attribution (optional)
|
|
57
|
+
|
|
58
|
+
The manifest tools work with zero setup. To answer "why is this package bundled?", collect a webpack
|
|
59
|
+
stats file first:
|
|
60
|
+
|
|
61
|
+
1. Call `how_to_collect_stats({ method: 'manual' | 'automatic' })` and apply the returned steps — it
|
|
62
|
+
adds `webpack-stats-plugin`, gates a `next.config` hook behind `ANALYZE=true`, and rebuilds.
|
|
63
|
+
2. Call `load_build_stats({ buildDir })` to get a `buildId`.
|
|
64
|
+
3. Call `load_webpack_stats({ buildId })` to parse the generated `.next/stats.json`.
|
|
65
|
+
4. Call `trace_import({ buildId, moduleName })` to see the import chain that pulls a module in.
|
|
66
|
+
5. Call `find_duplicates({ buildId })` to find packages bundled into more than one chunk, and
|
|
67
|
+
`explain_shared_chunks({ buildId })` to see what dominates the chunks loaded by many routes.
|
|
68
|
+
6. Call `suggest_optimizations({ buildId })` for severity-ranked, evidence-backed recommendations.
|
|
69
|
+
It works on manifests alone and is enriched with dedupe, shared-chunk, and package-import
|
|
70
|
+
findings once stats are loaded.
|
|
71
|
+
|
|
72
|
+
If the app builds with Turbopack there is no webpack module graph, so `how_to_collect_stats` says so
|
|
73
|
+
and points back to the manifest-only tools. The attribution tools degrade gracefully with a
|
|
74
|
+
breadcrumb when no stats file is loaded — it is never an error.
|
|
75
|
+
|
|
40
76
|
## Install
|
|
41
77
|
|
|
42
78
|
Run directly with `npx`:
|
|
@@ -77,6 +113,11 @@ Add this server to VS Code settings:
|
|
|
77
113
|
- "Summarize the build footprint and tell me which routes ship the most JavaScript."
|
|
78
114
|
- "Compare my baseline and current `.next` builds and show me which routes or shared chunks grew the most."
|
|
79
115
|
- "Explain what grew between my baseline and current `.next` builds and what I should fix first."
|
|
116
|
+
- "Set up webpack stats collection so I can see why a package is bundled."
|
|
117
|
+
- "Why is `axios` in my bundle? Trace its import chain."
|
|
118
|
+
- "Which npm packages are duplicated across chunks and how many bytes are wasted?"
|
|
119
|
+
- "What's dominating my shared chunks?"
|
|
120
|
+
- "Suggest the highest-impact bundle optimizations for this build."
|
|
80
121
|
|
|
81
122
|
## Development
|
|
82
123
|
|
package/dist/index.js
CHANGED
|
@@ -6,15 +6,27 @@ import { registerGetLargestRoutes } from './tools/get-largest-routes.js';
|
|
|
6
6
|
import { registerGetSharedChunks } from './tools/get-shared-chunks.js';
|
|
7
7
|
import { registerCompareBuilds } from './tools/compare-builds.js';
|
|
8
8
|
import { registerExplainGrowth } from './tools/explain-growth.js';
|
|
9
|
+
import { registerHowToCollectStats } from './tools/how-to-collect-stats.js';
|
|
10
|
+
import { registerLoadWebpackStats } from './tools/load-webpack-stats.js';
|
|
11
|
+
import { registerTraceImport } from './tools/trace-import.js';
|
|
12
|
+
import { registerFindDuplicates } from './tools/find-duplicates.js';
|
|
13
|
+
import { registerExplainSharedChunks } from './tools/explain-shared-chunks.js';
|
|
14
|
+
import { registerSuggestOptimizations } from './tools/suggest-optimizations.js';
|
|
9
15
|
const server = new McpServer({
|
|
10
16
|
name: 'perfonext-build-mcp',
|
|
11
|
-
version: '0.
|
|
17
|
+
version: '0.4.0',
|
|
12
18
|
});
|
|
13
19
|
registerLoadBuildStats(server);
|
|
14
20
|
registerGetLargestRoutes(server);
|
|
15
21
|
registerGetSharedChunks(server);
|
|
16
22
|
registerCompareBuilds(server);
|
|
17
23
|
registerExplainGrowth(server);
|
|
24
|
+
registerHowToCollectStats(server);
|
|
25
|
+
registerLoadWebpackStats(server);
|
|
26
|
+
registerTraceImport(server);
|
|
27
|
+
registerFindDuplicates(server);
|
|
28
|
+
registerExplainSharedChunks(server);
|
|
29
|
+
registerSuggestOptimizations(server);
|
|
18
30
|
const transport = new StdioServerTransport();
|
|
19
31
|
await server.connect(transport);
|
|
20
32
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAEhF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,qBAAqB;IAC3B,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAClC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACpC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAErC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuildComparison, GrowthExplanation, ParsedBuildStats, RouteSummaryEntry, SharedChunkSummaryEntry } from './types.js';
|
|
1
|
+
import type { BuildComparison, GrowthExplanation, OptimizationReport, ParsedBuildStats, ParsedWebpackStats, RouteSummaryEntry, SharedChunkSummaryEntry } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Strip Next.js content-hash suffixes (`framework-<hash>.js` → `framework.js`) so the same
|
|
4
4
|
* chunk matches across builds. Pure-hash basenames (e.g. CSS `4c7ae03ab6df2350.css`) have no
|
|
@@ -19,4 +19,10 @@ export declare function getLargestRoutes(build: ParsedBuildStats, limit: number)
|
|
|
19
19
|
export declare function getSharedChunks(build: ParsedBuildStats, limit: number): SharedChunkSummaryEntry[];
|
|
20
20
|
export declare function compareBuilds(baseline: ParsedBuildStats, current: ParsedBuildStats, limit: number): BuildComparison;
|
|
21
21
|
export declare function explainGrowth(baseline: ParsedBuildStats, current: ParsedBuildStats, limit: number): GrowthExplanation;
|
|
22
|
+
/**
|
|
23
|
+
* Aggregate manifest evidence (always) and webpack-stats evidence (when loaded) into
|
|
24
|
+
* severity-ranked, evidence-backed recommendations tied to concrete Next.js actions. Works on
|
|
25
|
+
* manifests alone; webpack stats add dedupe, shared-chunk, package-import, and cost findings.
|
|
26
|
+
*/
|
|
27
|
+
export declare function suggestOptimizations(build: ParsedBuildStats, stats: ParsedWebpackStats | null, limit?: number): OptimizationReport;
|
|
22
28
|
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/parser/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,iBAAiB,EAGjB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/parser/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,iBAAiB,EAGjB,kBAAkB,EAElB,gBAAgB,EAChB,kBAAkB,EAGlB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAYpB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAe3D;AAyCD,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAWA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAc5F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAWjG;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,MAAM,GACZ,eAAe,CAqEjB;AAsID,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,MAAM,GACZ,iBAAiB,CA+FnB;AAiED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,kBAAkB,GAAG,IAAI,EAChC,KAAK,SAAK,GACT,kBAAkB,CAyKpB"}
|
package/dist/parser/analysis.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { formatBytes, formatPct } from '../format.js';
|
|
2
|
+
import { explainSharedChunks, findDuplicates, getPackageCosts } from './webpack-stats.js';
|
|
1
3
|
function calculateDeltaRatio(baseline, current) {
|
|
2
4
|
if (baseline === 0) {
|
|
3
5
|
return current === 0 ? 0 : null;
|
|
@@ -337,4 +339,204 @@ export function explainGrowth(baseline, current, limit) {
|
|
|
337
339
|
suggestions,
|
|
338
340
|
};
|
|
339
341
|
}
|
|
342
|
+
// --- Optimization capstone (v0.4.0) ----------------------------------------
|
|
343
|
+
const OPT_CRITICAL_BYTES = 50 * 1024;
|
|
344
|
+
const OPT_WARNING_BYTES = 10 * 1024;
|
|
345
|
+
const ROUTE_SPLIT_CRITICAL_BYTES = 244 * 1024;
|
|
346
|
+
const ROUTE_SPLIT_WARNING_BYTES = 128 * 1024;
|
|
347
|
+
const BARREL_MODULE_COUNT = 8;
|
|
348
|
+
// A barrel is many SMALL re-exported modules; few huge modules (a token blob) won't benefit.
|
|
349
|
+
const BARREL_MAX_AVG_MODULE_BYTES = 50 * 1024;
|
|
350
|
+
const SHARED_BASELINE_RATIO = 0.5;
|
|
351
|
+
const SHARED_BASELINE_WARNING_RATIO = 0.7;
|
|
352
|
+
// optimize-package-imports is the lowest-confidence kind (import style is unknowable from build
|
|
353
|
+
// stats), so cap how many can appear and let higher-confidence findings surface first.
|
|
354
|
+
const OPT_IMPORTS_MAX = 5;
|
|
355
|
+
// Framework packages are loaded on (nearly) every route by design; you cannot move or barrel-trim
|
|
356
|
+
// them out, so they are never a move-out or optimize-imports target.
|
|
357
|
+
const FRAMEWORK_PACKAGES = new Set(['react', 'react-dom', 'next', 'scheduler']);
|
|
358
|
+
// Transpiler/polyfill runtimes are pulled in by the build, not imported via a barrel, so
|
|
359
|
+
// optimizePackageImports cannot help them and they cannot be "moved" out of shared code.
|
|
360
|
+
const POLYFILL_PACKAGES = new Set([
|
|
361
|
+
'core-js',
|
|
362
|
+
'core-js-pure',
|
|
363
|
+
'regenerator-runtime',
|
|
364
|
+
'tslib',
|
|
365
|
+
'@swc/helpers',
|
|
366
|
+
'@babel/runtime',
|
|
367
|
+
]);
|
|
368
|
+
// Infrastructure = framework + polyfill/runtime. These are structural to every build and are not
|
|
369
|
+
// actionable via move-out or optimize-imports in any app, so they are excluded from both.
|
|
370
|
+
function isInfrastructurePackage(packageName) {
|
|
371
|
+
return FRAMEWORK_PACKAGES.has(packageName) || POLYFILL_PACKAGES.has(packageName);
|
|
372
|
+
}
|
|
373
|
+
// Outlier-robust central tendency: a few very heavy routes must not skew the "typical page" used
|
|
374
|
+
// as the shared-baseline denominator.
|
|
375
|
+
function median(values) {
|
|
376
|
+
if (values.length === 0) {
|
|
377
|
+
return 0;
|
|
378
|
+
}
|
|
379
|
+
const sorted = [...values].sort((left, right) => left - right);
|
|
380
|
+
const mid = Math.floor(sorted.length / 2);
|
|
381
|
+
return sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
|
|
382
|
+
}
|
|
383
|
+
function severityForBytes(bytes, critical, warning) {
|
|
384
|
+
if (bytes >= critical) {
|
|
385
|
+
return 'critical';
|
|
386
|
+
}
|
|
387
|
+
if (bytes >= warning) {
|
|
388
|
+
return 'warning';
|
|
389
|
+
}
|
|
390
|
+
return 'info';
|
|
391
|
+
}
|
|
392
|
+
function stableSuggestionKey(suggestion) {
|
|
393
|
+
return [suggestion.kind, suggestion.packageName, suggestion.chunkPath, suggestion.routePath].join('|');
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Aggregate manifest evidence (always) and webpack-stats evidence (when loaded) into
|
|
397
|
+
* severity-ranked, evidence-backed recommendations tied to concrete Next.js actions. Works on
|
|
398
|
+
* manifests alone; webpack stats add dedupe, shared-chunk, package-import, and cost findings.
|
|
399
|
+
*/
|
|
400
|
+
export function suggestOptimizations(build, stats, limit = 15) {
|
|
401
|
+
const suggestions = [];
|
|
402
|
+
// Manifest-only: code-split routes that ship a lot of route-exclusive JavaScript.
|
|
403
|
+
for (const route of build.routes) {
|
|
404
|
+
const severity = severityForBytes(route.exclusiveChunkBytes, ROUTE_SPLIT_CRITICAL_BYTES, ROUTE_SPLIT_WARNING_BYTES);
|
|
405
|
+
if (severity === 'info') {
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
suggestions.push({
|
|
409
|
+
kind: 'code-split-route',
|
|
410
|
+
severity,
|
|
411
|
+
title: `Code-split ${route.path}`,
|
|
412
|
+
bytes: route.exclusiveChunkBytes,
|
|
413
|
+
evidence: `${route.path} ships ${formatBytes(route.exclusiveChunkBytes)} of route-exclusive JavaScript on initial load.`,
|
|
414
|
+
recommendedAction: 'Lazy-load interaction-only or below-the-fold components on this route with next/dynamic so they leave the initial bundle.',
|
|
415
|
+
packageName: null,
|
|
416
|
+
chunkPath: null,
|
|
417
|
+
routePath: route.path,
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
// Manifest-only: flag when the shared baseline dominates a typical page. Both sides use the route
|
|
421
|
+
// MEDIAN. The numerator is per-route sharedChunkBytes (what a route actually loads), not
|
|
422
|
+
// build.sharedChunkBytes (the sum of all shared chunks, which can exceed any one page's weight).
|
|
423
|
+
const medianRouteBytes = median(build.routes.map(route => route.totalBytes));
|
|
424
|
+
const medianRouteSharedBytes = median(build.routes.map(route => route.sharedChunkBytes));
|
|
425
|
+
if (build.routes.length >= 2 &&
|
|
426
|
+
medianRouteBytes > 0 &&
|
|
427
|
+
medianRouteSharedBytes >= SHARED_BASELINE_RATIO * medianRouteBytes) {
|
|
428
|
+
const ratio = medianRouteSharedBytes / medianRouteBytes;
|
|
429
|
+
suggestions.push({
|
|
430
|
+
kind: 'audit-shared-baseline',
|
|
431
|
+
severity: ratio >= SHARED_BASELINE_WARNING_RATIO ? 'warning' : 'info',
|
|
432
|
+
title: 'Shared baseline dominates page weight',
|
|
433
|
+
bytes: medianRouteSharedBytes,
|
|
434
|
+
evidence: `Shared chunks add ${formatBytes(medianRouteSharedBytes)} to a typical page — about ${formatPct(ratio)} of its ${formatBytes(medianRouteBytes)} total.`,
|
|
435
|
+
recommendedAction: stats
|
|
436
|
+
? 'Run explain_shared_chunks to see which packages dominate the shared chunks, then trim or defer them.'
|
|
437
|
+
: 'Collect webpack stats (how_to_collect_stats) and run explain_shared_chunks to see which packages dominate the shared chunks.',
|
|
438
|
+
packageName: null,
|
|
439
|
+
chunkPath: null,
|
|
440
|
+
routePath: null,
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
if (stats) {
|
|
444
|
+
// Dedupe packages emitted into more than one chunk.
|
|
445
|
+
for (const duplicate of findDuplicates(stats, 50)) {
|
|
446
|
+
const severity = severityForBytes(duplicate.wastedBytes, OPT_CRITICAL_BYTES, OPT_WARNING_BYTES);
|
|
447
|
+
if (severity === 'info') {
|
|
448
|
+
continue;
|
|
449
|
+
}
|
|
450
|
+
suggestions.push({
|
|
451
|
+
kind: 'dedupe-package',
|
|
452
|
+
severity,
|
|
453
|
+
title: `Dedupe ${duplicate.packageName}`,
|
|
454
|
+
bytes: duplicate.wastedBytes,
|
|
455
|
+
evidence: `${duplicate.packageName} is bundled into ${duplicate.chunkCount} chunks, duplicating ${formatBytes(duplicate.wastedBytes)} of code.`,
|
|
456
|
+
recommendedAction: 'Run `npm dedupe`, align the version across dependents, or import it from a single shared module so it is emitted once.',
|
|
457
|
+
packageName: duplicate.packageName,
|
|
458
|
+
chunkPath: null,
|
|
459
|
+
routePath: null,
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
// Move heavy non-framework packages out of widely-shared chunks.
|
|
463
|
+
const movedPackages = new Set();
|
|
464
|
+
for (const chunk of explainSharedChunks(build, stats, 20, 5)) {
|
|
465
|
+
if (chunk.routeCount < 2) {
|
|
466
|
+
continue;
|
|
467
|
+
}
|
|
468
|
+
for (const pkg of chunk.topPackages) {
|
|
469
|
+
if (pkg.packageName === '(app code)' || isInfrastructurePackage(pkg.packageName)) {
|
|
470
|
+
continue;
|
|
471
|
+
}
|
|
472
|
+
if (movedPackages.has(pkg.packageName)) {
|
|
473
|
+
continue;
|
|
474
|
+
}
|
|
475
|
+
const severity = severityForBytes(pkg.bytes, OPT_CRITICAL_BYTES, OPT_WARNING_BYTES);
|
|
476
|
+
if (severity === 'info') {
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
movedPackages.add(pkg.packageName);
|
|
480
|
+
suggestions.push({
|
|
481
|
+
kind: 'move-out-of-shared-chunk',
|
|
482
|
+
severity,
|
|
483
|
+
title: `Move ${pkg.packageName} out of the shared bundle`,
|
|
484
|
+
bytes: pkg.bytes,
|
|
485
|
+
evidence: `${pkg.packageName} adds ${formatBytes(pkg.bytes)} (${formatPct(pkg.shareOfChunk)}) to ${chunk.chunkPath}, which is loaded by ${chunk.routeCount} routes.`,
|
|
486
|
+
recommendedAction: 'Import it only where it is used (route-level or via next/dynamic) so routes that do not need it stop paying for it on initial load.',
|
|
487
|
+
packageName: pkg.packageName,
|
|
488
|
+
chunkPath: chunk.chunkPath,
|
|
489
|
+
routePath: null,
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
// Suggest optimizePackageImports for barrel-style packages shared across multiple routes.
|
|
494
|
+
// Single-route packages (code-split concern), infrastructure, and packages already flagged for
|
|
495
|
+
// move-out are excluded; move-out is more specific and subsumes barrel-trimming. Capped because
|
|
496
|
+
// import style cannot be confirmed from build stats.
|
|
497
|
+
const importCandidates = [];
|
|
498
|
+
for (const cost of getPackageCosts(build, stats, 100)) {
|
|
499
|
+
const avgModuleBytes = cost.moduleCount > 0 ? cost.totalBytes / cost.moduleCount : 0;
|
|
500
|
+
if (cost.moduleCount < BARREL_MODULE_COUNT ||
|
|
501
|
+
avgModuleBytes > BARREL_MAX_AVG_MODULE_BYTES ||
|
|
502
|
+
cost.routeCount < 2 ||
|
|
503
|
+
isInfrastructurePackage(cost.packageName) ||
|
|
504
|
+
movedPackages.has(cost.packageName)) {
|
|
505
|
+
continue;
|
|
506
|
+
}
|
|
507
|
+
const severity = severityForBytes(cost.totalBytes, OPT_CRITICAL_BYTES, OPT_WARNING_BYTES);
|
|
508
|
+
importCandidates.push({
|
|
509
|
+
kind: 'optimize-package-imports',
|
|
510
|
+
// Barrel optimization is a config win, not an emergency — cap at warning.
|
|
511
|
+
severity: severity === 'critical' ? 'warning' : severity,
|
|
512
|
+
title: `Optimize imports for ${cost.packageName}`,
|
|
513
|
+
bytes: cost.totalBytes,
|
|
514
|
+
evidence: `${cost.packageName} pulls in ${cost.moduleCount} modules (${formatBytes(cost.totalBytes)}) across ${cost.routeCount} routes; a barrel import can bundle far more than you use.`,
|
|
515
|
+
recommendedAction: `Add "${cost.packageName}" to experimental.optimizePackageImports in next.config so Next.js only bundles the exports you import.`,
|
|
516
|
+
packageName: cost.packageName,
|
|
517
|
+
chunkPath: null,
|
|
518
|
+
routePath: null,
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
importCandidates
|
|
522
|
+
.sort((left, right) => right.bytes - left.bytes || left.packageName.localeCompare(right.packageName))
|
|
523
|
+
.slice(0, OPT_IMPORTS_MAX)
|
|
524
|
+
.forEach(candidate => suggestions.push(candidate));
|
|
525
|
+
}
|
|
526
|
+
const ranked = suggestions
|
|
527
|
+
.sort((left, right) => SEVERITY_RANK[right.severity] - SEVERITY_RANK[left.severity] ||
|
|
528
|
+
right.bytes - left.bytes ||
|
|
529
|
+
stableSuggestionKey(left).localeCompare(stableSuggestionKey(right)))
|
|
530
|
+
.slice(0, limit);
|
|
531
|
+
return {
|
|
532
|
+
buildId: build.id,
|
|
533
|
+
webpackStatsUsed: stats !== null,
|
|
534
|
+
suggestionCount: ranked.length,
|
|
535
|
+
suggestions: ranked,
|
|
536
|
+
note: stats
|
|
537
|
+
? null
|
|
538
|
+
: 'Webpack stats are not loaded, so import- and package-level suggestions are unavailable. ' +
|
|
539
|
+
'Run how_to_collect_stats then load_webpack_stats for dedupe, shared-chunk, and package-import analysis.',
|
|
540
|
+
};
|
|
541
|
+
}
|
|
340
542
|
//# sourceMappingURL=analysis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/parser/analysis.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/parser/analysis.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/types.d.ts
CHANGED
|
@@ -128,4 +128,92 @@ export interface GrowthExplanation {
|
|
|
128
128
|
topGrowingChunks: ChunkGrowthContribution[];
|
|
129
129
|
suggestions: GrowthSuggestion[];
|
|
130
130
|
}
|
|
131
|
+
export interface WebpackModuleReason {
|
|
132
|
+
moduleName: string | null;
|
|
133
|
+
userRequest: string | null;
|
|
134
|
+
}
|
|
135
|
+
export interface WebpackModule {
|
|
136
|
+
name: string;
|
|
137
|
+
packageName: string | null;
|
|
138
|
+
sizeBytes: number;
|
|
139
|
+
chunkIds: Array<string | number>;
|
|
140
|
+
reasons: WebpackModuleReason[];
|
|
141
|
+
}
|
|
142
|
+
export interface WebpackChunk {
|
|
143
|
+
id: string | number;
|
|
144
|
+
names: string[];
|
|
145
|
+
files: string[];
|
|
146
|
+
sizeBytes: number;
|
|
147
|
+
}
|
|
148
|
+
export interface ParsedWebpackStats {
|
|
149
|
+
buildId: string;
|
|
150
|
+
statsPath: string;
|
|
151
|
+
modules: WebpackModule[];
|
|
152
|
+
chunks: WebpackChunk[];
|
|
153
|
+
moduleCount: number;
|
|
154
|
+
parsedModuleCount: number;
|
|
155
|
+
}
|
|
156
|
+
export interface ImportChainNode {
|
|
157
|
+
moduleName: string;
|
|
158
|
+
packageName: string | null;
|
|
159
|
+
}
|
|
160
|
+
export interface ImportTrace {
|
|
161
|
+
moduleName: string;
|
|
162
|
+
packageName: string | null;
|
|
163
|
+
sizeBytes: number;
|
|
164
|
+
chunkFiles: string[];
|
|
165
|
+
importChain: ImportChainNode[];
|
|
166
|
+
}
|
|
167
|
+
export interface TraceImportResult {
|
|
168
|
+
query: string;
|
|
169
|
+
matchCount: number;
|
|
170
|
+
traces: ImportTrace[];
|
|
171
|
+
}
|
|
172
|
+
export interface DuplicatePackageEntry {
|
|
173
|
+
packageName: string;
|
|
174
|
+
wastedBytes: number;
|
|
175
|
+
totalBytes: number;
|
|
176
|
+
chunkCount: number;
|
|
177
|
+
chunkFiles: string[];
|
|
178
|
+
}
|
|
179
|
+
export interface SharedChunkPackage {
|
|
180
|
+
packageName: string;
|
|
181
|
+
bytes: number;
|
|
182
|
+
shareOfChunk: number;
|
|
183
|
+
}
|
|
184
|
+
export interface SharedChunkComposition {
|
|
185
|
+
chunkPath: string;
|
|
186
|
+
sizeBytes: number;
|
|
187
|
+
routeCount: number;
|
|
188
|
+
sharedByRoutes: string[];
|
|
189
|
+
topPackages: SharedChunkPackage[];
|
|
190
|
+
}
|
|
191
|
+
export interface PackageCostEntry {
|
|
192
|
+
packageName: string;
|
|
193
|
+
totalBytes: number;
|
|
194
|
+
moduleCount: number;
|
|
195
|
+
chunkCount: number;
|
|
196
|
+
sharedBytes: number;
|
|
197
|
+
exclusiveBytes: number;
|
|
198
|
+
routeCount: number;
|
|
199
|
+
}
|
|
200
|
+
export type OptimizationKind = 'dedupe-package' | 'move-out-of-shared-chunk' | 'optimize-package-imports' | 'code-split-route' | 'audit-shared-baseline';
|
|
201
|
+
export interface OptimizationSuggestion {
|
|
202
|
+
kind: OptimizationKind;
|
|
203
|
+
severity: GrowthSeverity;
|
|
204
|
+
title: string;
|
|
205
|
+
bytes: number;
|
|
206
|
+
evidence: string;
|
|
207
|
+
recommendedAction: string;
|
|
208
|
+
packageName: string | null;
|
|
209
|
+
chunkPath: string | null;
|
|
210
|
+
routePath: string | null;
|
|
211
|
+
}
|
|
212
|
+
export interface OptimizationReport {
|
|
213
|
+
buildId: string;
|
|
214
|
+
webpackStatsUsed: boolean;
|
|
215
|
+
suggestionCount: number;
|
|
216
|
+
suggestions: OptimizationSuggestion[];
|
|
217
|
+
note: string | null;
|
|
218
|
+
}
|
|
131
219
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,IAAI,CAAC;AAE3F,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAC5B,qBAAqB,GACrB,WAAW,GACX,cAAc,GACd,kBAAkB,CAAC;AAEvB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DuplicatePackageEntry, PackageCostEntry, ParsedBuildStats, ParsedWebpackStats, SharedChunkComposition, TraceImportResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the npm package an emitted module belongs to. Uses the LAST `node_modules/` segment so
|
|
4
|
+
* nested installs (`a/node_modules/b`) attribute to the inner package, and preserves scoped names
|
|
5
|
+
* (`@org/pkg`). Returns null for first-party application code.
|
|
6
|
+
*/
|
|
7
|
+
export declare function extractPackageName(moduleName: string): string | null;
|
|
8
|
+
/**
|
|
9
|
+
* Parse a webpack module-stats JSON (`.next/stats.json`) into a compact, analysis-ready shape.
|
|
10
|
+
* Only the fields the attribution tools need are retained — raw source, asset maps, and other
|
|
11
|
+
* webpack noise are dropped so a multi-MB stats file stays small in memory.
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseWebpackStats(buildDirPath: string, buildId: string): Promise<ParsedWebpackStats | null>;
|
|
14
|
+
export declare function traceImport(stats: ParsedWebpackStats, moduleName: string, limit?: number): TraceImportResult;
|
|
15
|
+
/**
|
|
16
|
+
* Rank npm packages whose code is emitted into more than one chunk. Wasted bytes are the
|
|
17
|
+
* duplicated copies: `moduleBytes * (distinctChunkCount - 1)`, aggregated per package.
|
|
18
|
+
*/
|
|
19
|
+
export declare function findDuplicates(stats: ParsedWebpackStats, limit?: number): DuplicatePackageEntry[];
|
|
20
|
+
/**
|
|
21
|
+
* Explain what dominates each shared chunk: join the manifest's shared chunks to the webpack
|
|
22
|
+
* module graph and rank the packages (and app code) by their byte share of the chunk.
|
|
23
|
+
*/
|
|
24
|
+
export declare function explainSharedChunks(build: ParsedBuildStats, stats: ParsedWebpackStats, limit?: number, packagesPerChunk?: number): SharedChunkComposition[];
|
|
25
|
+
/**
|
|
26
|
+
* Aggregate emitted module bytes per npm package, joined to the manifest so each package reports
|
|
27
|
+
* which routes pay for it and how its bytes split between shared and route-exclusive chunks.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getPackageCosts(build: ParsedBuildStats, stats: ParsedWebpackStats, limit?: number): PackageCostEntry[];
|
|
30
|
+
//# sourceMappingURL=webpack-stats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack-stats.d.ts","sourceRoot":"","sources":["../../src/parser/webpack-stats.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,qBAAqB,EAGrB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EAEtB,iBAAiB,EAIlB,MAAM,YAAY,CAAC;AA6CpB;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBpE;AA4DD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA2CpC;AAmED,wBAAgB,WAAW,CACzB,KAAK,EAAE,kBAAkB,EACzB,UAAU,EAAE,MAAM,EAClB,KAAK,SAAK,GACT,iBAAiB,CAsBnB;AAaD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,EACzB,KAAK,SAAK,GACT,qBAAqB,EAAE,CA+CzB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,kBAAkB,EACzB,KAAK,SAAI,EACT,gBAAgB,SAAI,GACnB,sBAAsB,EAAE,CAkD1B;AAWD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,kBAAkB,EACzB,KAAK,SAAK,GACT,gBAAgB,EAAE,CAoEpB"}
|