whyinstall 0.2.0 → 0.3.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 +33 -0
- package/dist/analyzer.d.ts +1 -1
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +2 -8
- package/dist/analyzer.js.map +1 -1
- package/dist/cli.js +13 -5
- package/dist/cli.js.map +1 -1
- package/dist/fileFinder.d.ts +0 -8
- package/dist/fileFinder.d.ts.map +1 -1
- package/dist/fileFinder.js +0 -94
- package/dist/fileFinder.js.map +1 -1
- package/dist/formatter.d.ts +3 -2
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +19 -49
- package/dist/formatter.js.map +1 -1
- package/dist/sizeMapAnalyzer.d.ts +3 -0
- package/dist/sizeMapAnalyzer.d.ts.map +1 -0
- package/dist/sizeMapAnalyzer.js +134 -0
- package/dist/sizeMapAnalyzer.js.map +1 -0
- package/dist/types.d.ts +11 -13
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/analyzer.ts +2 -9
- package/src/cli.ts +14 -7
- package/src/fileFinder.ts +0 -111
- package/src/formatter.ts +24 -57
- package/src/sizeMapAnalyzer.ts +145 -0
- package/src/types.ts +13 -15
- package/src/impactAnalyzer.ts +0 -139
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ whyinstall lodash
|
|
|
24
24
|
|
|
25
25
|
- `-j, --json` - Output results as JSON
|
|
26
26
|
- `-c, --cwd <path>` - Set working directory (default: current directory)
|
|
27
|
+
- `-s, --size-map` - Show bundle size impact breakdown
|
|
27
28
|
|
|
28
29
|
## Features
|
|
29
30
|
|
|
@@ -35,9 +36,14 @@ whyinstall lodash
|
|
|
35
36
|
- Colored tree output for readability
|
|
36
37
|
- JSON output for CI/CD
|
|
37
38
|
- Actionable suggestions for optimization
|
|
39
|
+
- Bundle size impact breakdown
|
|
38
40
|
|
|
39
41
|
## Example Output
|
|
40
42
|
|
|
43
|
+
```bash
|
|
44
|
+
whyinstall chalk
|
|
45
|
+
```
|
|
46
|
+
|
|
41
47
|
```
|
|
42
48
|
chalk v5.3.0 (43 KB)
|
|
43
49
|
Terminal string styling done right
|
|
@@ -56,6 +62,33 @@ Suggested actions:
|
|
|
56
62
|
1. Can be removed from direct dependencies - it's installed transitively
|
|
57
63
|
```
|
|
58
64
|
|
|
65
|
+
### Size Map Output
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
whyinstall next --size-map
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Size map for: next
|
|
73
|
+
|
|
74
|
+
next total impact: 66.69 MB
|
|
75
|
+
|
|
76
|
+
Breakdown:
|
|
77
|
+
- next: 63.08 MB
|
|
78
|
+
- caniuse-lite: 2.19 MB
|
|
79
|
+
- styled-jsx: 971 KB
|
|
80
|
+
- @swc/helpers: 190 KB
|
|
81
|
+
- source-map-js: 104 KB
|
|
82
|
+
- postcss: 101 KB
|
|
83
|
+
- tslib: 60 KB
|
|
84
|
+
- nanoid: 20 KB
|
|
85
|
+
- @next/env: 10 KB
|
|
86
|
+
- picocolors: 3 KB
|
|
87
|
+
- client-only: 144 B
|
|
88
|
+
|
|
89
|
+
This package contributes 44.7% of your vendor bundle.
|
|
90
|
+
```
|
|
91
|
+
|
|
59
92
|
## Development
|
|
60
93
|
|
|
61
94
|
```bash
|
package/dist/analyzer.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { AnalyzeResult } from './types';
|
|
2
|
-
export declare function analyzePackage(packageName: string, cwd?: string
|
|
2
|
+
export declare function analyzePackage(packageName: string, cwd?: string): AnalyzeResult;
|
|
3
3
|
//# sourceMappingURL=analyzer.d.ts.map
|
package/dist/analyzer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+B,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+B,aAAa,EAAE,MAAM,SAAS,CAAC;AA+LrE,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,aAAa,CA6D9F"}
|
package/dist/analyzer.js
CHANGED
|
@@ -4,7 +4,6 @@ exports.analyzePackage = analyzePackage;
|
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
const fileFinder_1 = require("./fileFinder");
|
|
7
|
-
const impactAnalyzer_1 = require("./impactAnalyzer");
|
|
8
7
|
function readPackageJson(path) {
|
|
9
8
|
try {
|
|
10
9
|
if ((0, fs_1.existsSync)(path)) {
|
|
@@ -161,7 +160,7 @@ function formatSize(bytes) {
|
|
|
161
160
|
return `${(bytes / 1024).toFixed(0)} KB`;
|
|
162
161
|
return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
|
|
163
162
|
}
|
|
164
|
-
function analyzePackage(packageName, cwd = process.cwd()
|
|
163
|
+
function analyzePackage(packageName, cwd = process.cwd()) {
|
|
165
164
|
const rootPackageJson = (0, path_1.join)(cwd, 'package.json');
|
|
166
165
|
const packageJsonPath = findPackageJsonPath(packageName, cwd);
|
|
167
166
|
if (!packageJsonPath) {
|
|
@@ -202,10 +201,6 @@ function analyzePackage(packageName, cwd = process.cwd(), includeImpact = false)
|
|
|
202
201
|
}
|
|
203
202
|
}
|
|
204
203
|
const sourceFiles = (0, fileFinder_1.findFilesUsingPackage)(packageName, cwd);
|
|
205
|
-
let impact;
|
|
206
|
-
if (includeImpact) {
|
|
207
|
-
impact = (0, impactAnalyzer_1.analyzeImpact)(packageName, cwd);
|
|
208
|
-
}
|
|
209
204
|
return {
|
|
210
205
|
package: {
|
|
211
206
|
name: packageName,
|
|
@@ -213,8 +208,7 @@ function analyzePackage(packageName, cwd = process.cwd(), includeImpact = false)
|
|
|
213
208
|
description,
|
|
214
209
|
size,
|
|
215
210
|
paths,
|
|
216
|
-
sourceFiles: sourceFiles.length > 0 ? sourceFiles : undefined
|
|
217
|
-
impact
|
|
211
|
+
sourceFiles: sourceFiles.length > 0 ? sourceFiles : undefined
|
|
218
212
|
},
|
|
219
213
|
suggestions
|
|
220
214
|
};
|
package/dist/analyzer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":";;AAiMA,wCA6DC;AA9PD,2BAAqE;AACrE,+BAAqC;AAGrC,6CAAqD;AAYrD,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAmB,EAAE,GAAW;IAC3D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,WAAW,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QAC/E,IAAI,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;YAChC,OAAO,eAAe,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,WAAmB,EAAE,QAAgB;IACrE,MAAM,aAAa,GAAG;QACpB,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,CAAC;QAC3D,IAAA,WAAI,EAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC;KAC5C,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1C,OAAO,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,aAAQ,EAAC,WAAW,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,WAAW,CAAC,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC;oBACrC,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;wBAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;wBAC1C,IAAI,OAAO;4BAAE,SAAS,IAAI,OAAO,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAgB;IAC1C,MAAM,IAAI,GAAyD,EAAE,CAAC;IAEtE,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,GAAW,EACX,WAAmB,EAAE;IAErB,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAQlC,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,CAAC,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAgB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,CAAC;IAE9F,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAE/B,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAEjE,MAAM,QAAQ,GAAG,GAAG,kBAAkB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QACpE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,kBAAkB;oBAC9B,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;oBAC9G,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK;oBACL,IAAI,EAAE,OAAO;oBACb,eAAe,EAAE,OAAO,CAAC,eAAe;iBACzC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,OAAO,EAAE,IAAA,cAAO,EAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC/F,IAAI,kBAAkB,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,kBAAkB;wBACjC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;wBAC5F,CAAC,CAAC,EAAE,CAAC;oBACP,KAAK,CAAC,IAAI,CAAC;wBACT,WAAW,EAAE,OAAO;wBACpB,KAAK,EAAE,QAAQ;wBACf,eAAe,EAAE,kBAAkB;qBACpC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACpD,CAAC;AAED,SAAgB,cAAc,CAAC,WAAmB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IAC7E,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC9D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,6BAA6B,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,eAAe,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,SAAS,CAAC;IAC1C,MAAM,WAAW,GAAG,GAAG,EAAE,WAAW,CAAC;IAErC,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,KAAK,GAAG,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAElD,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC1B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,WAAW,CAAC,IAAI,CAAC,YAAY,WAAW,6BAA6B,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAEvD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,WAAW,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QACpG,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,CAAC;QACpG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;YAC9D,WAAW,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,kCAAqB,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAE5D,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,OAAO;YACP,WAAW;YACX,IAAI;YACJ,KAAK;YACL,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SAC9D;QACD,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -9,15 +9,16 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
9
9
|
const analyzer_1 = require("./analyzer");
|
|
10
10
|
const formatter_1 = require("./formatter");
|
|
11
11
|
const packageManager_1 = require("./packageManager");
|
|
12
|
+
const sizeMapAnalyzer_1 = require("./sizeMapAnalyzer");
|
|
12
13
|
const program = new commander_1.Command();
|
|
13
14
|
program
|
|
14
15
|
.name('whyinstall')
|
|
15
16
|
.description('Find why a dependency exists in your JS/TS project')
|
|
16
|
-
.version('0.
|
|
17
|
+
.version('0.3.1')
|
|
17
18
|
.argument('<package-name>', 'Package name to analyze')
|
|
18
19
|
.option('-j, --json', 'Output as JSON')
|
|
19
20
|
.option('-c, --cwd <path>', 'Working directory', process.cwd())
|
|
20
|
-
.option('--
|
|
21
|
+
.option('-s, --size-map', 'Show bundle size impact breakdown')
|
|
21
22
|
.action((packageName, options) => {
|
|
22
23
|
try {
|
|
23
24
|
const cwd = options.cwd || process.cwd();
|
|
@@ -25,9 +26,16 @@ program
|
|
|
25
26
|
if (!options.json) {
|
|
26
27
|
console.log(`\n${chalk_1.default.gray(`Detected package manager: ${pm}`)}\n`);
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
if (options.sizeMap) {
|
|
30
|
+
const result = (0, sizeMapAnalyzer_1.analyzeSizeMap)(packageName, cwd);
|
|
31
|
+
const output = (0, formatter_1.formatSizeMap)(result, options.json);
|
|
32
|
+
console.log(output);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const result = (0, analyzer_1.analyzePackage)(packageName, cwd);
|
|
36
|
+
const output = (0, formatter_1.formatOutput)(result, options.json);
|
|
37
|
+
console.log(output);
|
|
38
|
+
}
|
|
31
39
|
process.exit(0);
|
|
32
40
|
}
|
|
33
41
|
catch (error) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,yCAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,yCAA4C;AAC5C,2CAA0D;AAC1D,qDAAwD;AACxD,uDAAmD;AAEnD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,oDAAoD,CAAC;KACjE,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;KACrD,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC9D,MAAM,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;KAC7D,MAAM,CAAC,CAAC,WAAmB,EAAE,OAA4D,EAAE,EAAE;IAC5F,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,IAAA,qCAAoB,EAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAA,gCAAc,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,IAAA,yBAAa,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAA,yBAAc,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/fileFinder.d.ts
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
1
|
export declare function findSourceFiles(dir: string, maxDepth?: number, currentDepth?: number): string[];
|
|
2
|
-
export interface FileUsage {
|
|
3
|
-
file: string;
|
|
4
|
-
lines: number[];
|
|
5
|
-
methods: string[];
|
|
6
|
-
context?: string[];
|
|
7
|
-
purpose?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function analyzeFileUsage(filePath: string, packageName: string, cwd: string): FileUsage | null;
|
|
10
2
|
export declare function findFilesUsingPackage(packageName: string, cwd: string): string[];
|
|
11
3
|
//# sourceMappingURL=fileFinder.d.ts.map
|
package/dist/fileFinder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileFinder.d.ts","sourceRoot":"","sources":["../src/fileFinder.ts"],"names":[],"mappings":"AAcA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,EAAE,YAAY,GAAE,MAAU,GAAG,MAAM,EAAE,CAgCrG;
|
|
1
|
+
{"version":3,"file":"fileFinder.d.ts","sourceRoot":"","sources":["../src/fileFinder.ts"],"names":[],"mappings":"AAcA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,EAAE,YAAY,GAAE,MAAU,GAAG,MAAM,EAAE,CAgCrG;AAmBD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAYhF"}
|
package/dist/fileFinder.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.findSourceFiles = findSourceFiles;
|
|
4
|
-
exports.analyzeFileUsage = analyzeFileUsage;
|
|
5
4
|
exports.findFilesUsingPackage = findFilesUsingPackage;
|
|
6
5
|
const fs_1 = require("fs");
|
|
7
6
|
const path_1 = require("path");
|
|
@@ -58,99 +57,6 @@ function fileContainsPackage(filePath, packageName) {
|
|
|
58
57
|
return false;
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
|
-
function analyzeFileUsage(filePath, packageName, cwd) {
|
|
62
|
-
try {
|
|
63
|
-
const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
64
|
-
const lines = content.split('\n');
|
|
65
|
-
const relativePath = filePath.replace(cwd + '/', '');
|
|
66
|
-
const importPatterns = [
|
|
67
|
-
new RegExp(`require\\(['"]${packageName}(/.*)?['"]\\)`, 'g'),
|
|
68
|
-
new RegExp(`from\\s+['"]${packageName}(/.*)?['"]`, 'g'),
|
|
69
|
-
new RegExp(`import\\s+.*\\s+from\\s+['"]${packageName}(/.*)?['"]`, 'g'),
|
|
70
|
-
new RegExp(`import\\s+['"]${packageName}(/.*)?['"]`, 'g'),
|
|
71
|
-
];
|
|
72
|
-
const usageLines = [];
|
|
73
|
-
const methods = new Set();
|
|
74
|
-
const context = [];
|
|
75
|
-
// Find import lines
|
|
76
|
-
lines.forEach((line, index) => {
|
|
77
|
-
const lineNum = index + 1;
|
|
78
|
-
if (importPatterns.some(pattern => pattern.test(line))) {
|
|
79
|
-
usageLines.push(lineNum);
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
// Find method usage patterns:
|
|
83
|
-
const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
84
|
-
// 1. Direct: packageName.method() or packageName.method
|
|
85
|
-
const directMethodPattern = new RegExp('\\b' + escapedPackageName + '\\.(\\w+)', 'g');
|
|
86
|
-
const directMatches = content.matchAll(directMethodPattern);
|
|
87
|
-
for (const match of directMatches) {
|
|
88
|
-
methods.add(match[1]);
|
|
89
|
-
}
|
|
90
|
-
// 2. Destructured imports: const { red, bold } = require('chalk')
|
|
91
|
-
const destructurePattern = new RegExp('(?:const|let|var)\\s*\\{[^}]*\\}\\s*=\\s*(?:require|import)\\s*\\(?[\'"]' + escapedPackageName, 'g');
|
|
92
|
-
if (destructurePattern.test(content)) {
|
|
93
|
-
const destructureMatch = content.match(/(?:const|let|var)\s*\{([^}]+)\}/);
|
|
94
|
-
if (destructureMatch) {
|
|
95
|
-
destructureMatch[1].split(',').forEach(m => {
|
|
96
|
-
const method = m.trim().split(':')[0].trim();
|
|
97
|
-
if (method)
|
|
98
|
-
methods.add(method);
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// 3. Default import assigned to variable: const program = new Command(); program.method()
|
|
103
|
-
// Find named imports: import { Command } from 'commander'
|
|
104
|
-
const namedImportMatch = content.match(/import\s*\{([^}]+)\}\s*from\s*['"]([^'"]+)['"]/i);
|
|
105
|
-
if (namedImportMatch && namedImportMatch[2] === packageName) {
|
|
106
|
-
const namedImports = namedImportMatch[1].split(',').map(i => i.trim().split('as')[0].trim());
|
|
107
|
-
namedImports.forEach(importName => {
|
|
108
|
-
// Find instances: const program = new Command()
|
|
109
|
-
const escapedImportName = importName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
110
|
-
const instancePattern = new RegExp('(?:const|let|var)\\s+([A-Za-z_$][A-Za-z0-9_$]*)\\s*=\\s*new\\s+' + escapedImportName, 'g');
|
|
111
|
-
const instanceMatches = content.matchAll(instancePattern);
|
|
112
|
-
for (const instanceMatch of instanceMatches) {
|
|
113
|
-
const instanceName = instanceMatch[1];
|
|
114
|
-
// Find methods on this instance: program.command()
|
|
115
|
-
const instanceMethodPattern = new RegExp('\\b' + instanceName + '\\.(\\w+)\\s*\\(', 'g');
|
|
116
|
-
const methodMatches = content.matchAll(instanceMethodPattern);
|
|
117
|
-
for (const methodMatch of methodMatches) {
|
|
118
|
-
methods.add(methodMatch[1]);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
// 4. Default import: import Command from 'commander' or const Command = require('commander')
|
|
124
|
-
const defaultImportMatch = content.match(new RegExp('(?:import|const|let|var)\\s+([A-Za-z_$][A-Za-z0-9_$]*)\\s*(?:=|from)\\s*[\'"]' + escapedPackageName, 'i'));
|
|
125
|
-
if (defaultImportMatch) {
|
|
126
|
-
const importedName = defaultImportMatch[1];
|
|
127
|
-
// Find all method calls on this imported name: program.method()
|
|
128
|
-
const instanceMethodPattern = new RegExp('\\b' + importedName + '\\.(\\w+)\\s*\\(', 'g');
|
|
129
|
-
const instanceMatches = content.matchAll(instanceMethodPattern);
|
|
130
|
-
for (const match of instanceMatches) {
|
|
131
|
-
methods.add(match[1]);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
// Capture context (lines around usage)
|
|
135
|
-
if (usageLines.length > 0) {
|
|
136
|
-
const firstLine = Math.max(0, usageLines[0] - 3);
|
|
137
|
-
const lastLine = Math.min(lines.length, usageLines[usageLines.length - 1] + 3);
|
|
138
|
-
context.push(...lines.slice(firstLine, lastLine));
|
|
139
|
-
}
|
|
140
|
-
if (usageLines.length > 0) {
|
|
141
|
-
return {
|
|
142
|
-
file: relativePath,
|
|
143
|
-
lines: usageLines,
|
|
144
|
-
methods: Array.from(methods),
|
|
145
|
-
context: context.slice(0, 10) // Limit context
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
return null;
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
60
|
function findFilesUsingPackage(packageName, cwd) {
|
|
155
61
|
const sourceFiles = findSourceFiles(cwd);
|
|
156
62
|
const matchingFiles = [];
|
package/dist/fileFinder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileFinder.js","sourceRoot":"","sources":["../src/fileFinder.ts"],"names":[],"mappings":";;AAcA,0CAgCC;
|
|
1
|
+
{"version":3,"file":"fileFinder.js","sourceRoot":"","sources":["../src/fileFinder.ts"],"names":[],"mappings":"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"}
|
package/dist/formatter.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { AnalyzeResult } from './types';
|
|
2
|
-
export declare function formatOutput(result: AnalyzeResult, json?: boolean
|
|
1
|
+
import { AnalyzeResult, SizeMapResult } from './types';
|
|
2
|
+
export declare function formatOutput(result: AnalyzeResult, json?: boolean): string;
|
|
3
|
+
export declare function formatSizeMap(result: SizeMapResult, json?: boolean): string;
|
|
3
4
|
//# sourceMappingURL=formatter.d.ts.map
|
package/dist/formatter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAkB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAkB,aAAa,EAAE,MAAM,SAAS,CAAC;AAwDvE,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,GAAE,OAAe,GAAG,MAAM,CA8CjF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,GAAE,OAAe,GAAG,MAAM,CAoBlF"}
|
package/dist/formatter.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.formatOutput = formatOutput;
|
|
7
|
+
exports.formatSizeMap = formatSizeMap;
|
|
7
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
9
|
function formatSize(bytes) {
|
|
9
10
|
if (!bytes)
|
|
@@ -58,23 +59,7 @@ function getTypeLabel(type) {
|
|
|
58
59
|
};
|
|
59
60
|
return labels[type] || type;
|
|
60
61
|
}
|
|
61
|
-
function
|
|
62
|
-
const emojis = {
|
|
63
|
-
Low: '🟢',
|
|
64
|
-
Medium: '🟡',
|
|
65
|
-
High: '🔴'
|
|
66
|
-
};
|
|
67
|
-
return emojis[risk] || '⚪';
|
|
68
|
-
}
|
|
69
|
-
function getRiskColor(risk) {
|
|
70
|
-
const colors = {
|
|
71
|
-
Low: chalk_1.default.green,
|
|
72
|
-
Medium: chalk_1.default.yellow,
|
|
73
|
-
High: chalk_1.default.red
|
|
74
|
-
};
|
|
75
|
-
return colors[risk] || chalk_1.default.gray;
|
|
76
|
-
}
|
|
77
|
-
function formatOutput(result, json = false, showImpact = false) {
|
|
62
|
+
function formatOutput(result, json = false) {
|
|
78
63
|
if (json) {
|
|
79
64
|
return JSON.stringify(result, null, 2);
|
|
80
65
|
}
|
|
@@ -106,38 +91,6 @@ function formatOutput(result, json = false, showImpact = false) {
|
|
|
106
91
|
output += ` ${chalk_1.default.blue(file)}\n`;
|
|
107
92
|
});
|
|
108
93
|
}
|
|
109
|
-
if (showImpact && pkg.impact) {
|
|
110
|
-
const impact = pkg.impact;
|
|
111
|
-
output += '\n' + chalk_1.default.bold('Impact analysis:') + '\n\n';
|
|
112
|
-
if (impact.files.length > 0) {
|
|
113
|
-
output += chalk_1.default.bold('Used in ') + chalk_1.default.bold(`${impact.files.length} file${impact.files.length !== 1 ? 's' : ''}:`) + '\n\n';
|
|
114
|
-
impact.files.forEach((file, index) => {
|
|
115
|
-
const fileUsage = file;
|
|
116
|
-
const lineRange = fileUsage.lines.length === 1
|
|
117
|
-
? `Line ${fileUsage.lines[0]}`
|
|
118
|
-
: `Lines ${Math.min(...fileUsage.lines)}–${Math.max(...fileUsage.lines)}`;
|
|
119
|
-
output += `${index + 1}. ${chalk_1.default.blue(fileUsage.file)}\n`;
|
|
120
|
-
output += ` ${chalk_1.default.gray(lineRange)}\n`;
|
|
121
|
-
if (fileUsage.purpose) {
|
|
122
|
-
output += ` ${chalk_1.default.dim(`Purpose: ${fileUsage.purpose}`)}\n`;
|
|
123
|
-
}
|
|
124
|
-
if (fileUsage.methods.length > 0) {
|
|
125
|
-
output += ` ${chalk_1.default.dim(`Methods: ${fileUsage.methods.slice(0, 5).join(', ')}${fileUsage.methods.length > 5 ? '...' : ''}`)}\n`;
|
|
126
|
-
}
|
|
127
|
-
output += '\n';
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
output += chalk_1.default.yellow(' No direct usage found in source files\n\n');
|
|
132
|
-
}
|
|
133
|
-
output += chalk_1.default.bold('Estimated removal impact:') + '\n';
|
|
134
|
-
impact.impacts.forEach((impactText) => {
|
|
135
|
-
output += ` ${chalk_1.default.gray('-')} ${chalk_1.default.gray(impactText)}\n`;
|
|
136
|
-
});
|
|
137
|
-
output += '\n';
|
|
138
|
-
const riskColor = getRiskColor(impact.riskLevel);
|
|
139
|
-
output += chalk_1.default.bold('Risk level: ') + getRiskEmoji(impact.riskLevel) + ' ' + riskColor(impact.riskLevel) + '\n';
|
|
140
|
-
}
|
|
141
94
|
if (suggestions.length > 0) {
|
|
142
95
|
output += '\n' + chalk_1.default.bold('Suggested actions:') + '\n';
|
|
143
96
|
suggestions.forEach((suggestion, index) => {
|
|
@@ -146,4 +99,21 @@ function formatOutput(result, json = false, showImpact = false) {
|
|
|
146
99
|
}
|
|
147
100
|
return output;
|
|
148
101
|
}
|
|
102
|
+
function formatSizeMap(result, json = false) {
|
|
103
|
+
if (json) {
|
|
104
|
+
return JSON.stringify(result, null, 2);
|
|
105
|
+
}
|
|
106
|
+
let output = '';
|
|
107
|
+
output += chalk_1.default.bold.cyan(`Size map for: ${result.packageName}\n\n`);
|
|
108
|
+
output += chalk_1.default.bold(`${result.packageName} total impact: `) + chalk_1.default.green(formatSize(result.totalSize)) + '\n\n';
|
|
109
|
+
output += chalk_1.default.bold('Breakdown:\n');
|
|
110
|
+
for (const item of result.breakdown) {
|
|
111
|
+
const sizeStr = formatSize(item.size);
|
|
112
|
+
output += chalk_1.default.gray('- ') + chalk_1.default.white(item.name) + chalk_1.default.gray(': ') + chalk_1.default.yellow(sizeStr) + '\n';
|
|
113
|
+
}
|
|
114
|
+
if (result.percentOfNodeModules !== undefined && result.percentOfNodeModules > 0) {
|
|
115
|
+
output += '\n' + chalk_1.default.dim(`This package contributes ${result.percentOfNodeModules.toFixed(1)}% of your vendor bundle.\n`);
|
|
116
|
+
}
|
|
117
|
+
return output;
|
|
118
|
+
}
|
|
149
119
|
//# sourceMappingURL=formatter.js.map
|
package/dist/formatter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sizeMapAnalyzer.d.ts","sourceRoot":"","sources":["../src/sizeMapAnalyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAiB,MAAM,SAAS,CAAC;AAmHvD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,aAAa,CA0B9F"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeSizeMap = analyzeSizeMap;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const JS_EXTENSIONS = new Set(['.js', '.mjs', '.cjs']);
|
|
7
|
+
const EXCLUDE_DIRS = new Set(['test', 'tests', '__tests__', 'docs', 'doc', 'types', '@types', 'typings', '.d.ts']);
|
|
8
|
+
function readPackageJson(path) {
|
|
9
|
+
try {
|
|
10
|
+
if ((0, fs_1.existsSync)(path)) {
|
|
11
|
+
return JSON.parse((0, fs_1.readFileSync)(path, 'utf-8'));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
catch { }
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
function shouldExclude(name) {
|
|
18
|
+
const lower = name.toLowerCase();
|
|
19
|
+
return EXCLUDE_DIRS.has(lower) || lower.endsWith('.d.ts') || lower.startsWith('.');
|
|
20
|
+
}
|
|
21
|
+
function calculateJsSize(dir) {
|
|
22
|
+
let total = 0;
|
|
23
|
+
try {
|
|
24
|
+
const entries = (0, fs_1.readdirSync)(dir);
|
|
25
|
+
for (const entry of entries) {
|
|
26
|
+
if (shouldExclude(entry))
|
|
27
|
+
continue;
|
|
28
|
+
const fullPath = (0, path_1.join)(dir, entry);
|
|
29
|
+
try {
|
|
30
|
+
const stats = (0, fs_1.statSync)(fullPath);
|
|
31
|
+
if (stats.isDirectory()) {
|
|
32
|
+
if (entry !== 'node_modules') {
|
|
33
|
+
total += calculateJsSize(fullPath);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (JS_EXTENSIONS.has((0, path_1.extname)(entry).toLowerCase())) {
|
|
37
|
+
total += stats.size;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch { }
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch { }
|
|
44
|
+
return total;
|
|
45
|
+
}
|
|
46
|
+
function getNodeModulesSize(cwd) {
|
|
47
|
+
const nmPath = (0, path_1.join)(cwd, 'node_modules');
|
|
48
|
+
let total = 0;
|
|
49
|
+
function walkDir(dir) {
|
|
50
|
+
try {
|
|
51
|
+
const entries = (0, fs_1.readdirSync)(dir);
|
|
52
|
+
for (const entry of entries) {
|
|
53
|
+
const fullPath = (0, path_1.join)(dir, entry);
|
|
54
|
+
try {
|
|
55
|
+
const stats = (0, fs_1.statSync)(fullPath);
|
|
56
|
+
if (stats.isDirectory()) {
|
|
57
|
+
walkDir(fullPath);
|
|
58
|
+
}
|
|
59
|
+
else if (JS_EXTENSIONS.has((0, path_1.extname)(entry).toLowerCase())) {
|
|
60
|
+
total += stats.size;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch { }
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch { }
|
|
67
|
+
}
|
|
68
|
+
walkDir(nmPath);
|
|
69
|
+
return total;
|
|
70
|
+
}
|
|
71
|
+
function findPackagePath(packageName, cwd) {
|
|
72
|
+
const directPath = (0, path_1.join)(cwd, 'node_modules', packageName);
|
|
73
|
+
if ((0, fs_1.existsSync)(directPath))
|
|
74
|
+
return directPath;
|
|
75
|
+
// Handle scoped packages
|
|
76
|
+
if (packageName.startsWith('@')) {
|
|
77
|
+
const parts = packageName.split('/');
|
|
78
|
+
const scopedPath = (0, path_1.join)(cwd, 'node_modules', parts[0], parts[1]);
|
|
79
|
+
if ((0, fs_1.existsSync)(scopedPath))
|
|
80
|
+
return scopedPath;
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
function getDependencyTree(packagePath, cwd, visited = new Set()) {
|
|
85
|
+
const breakdown = [];
|
|
86
|
+
const pkgJsonPath = (0, path_1.join)(packagePath, 'package.json');
|
|
87
|
+
const pkg = readPackageJson(pkgJsonPath);
|
|
88
|
+
if (!pkg?.dependencies)
|
|
89
|
+
return breakdown;
|
|
90
|
+
for (const depName of Object.keys(pkg.dependencies)) {
|
|
91
|
+
if (visited.has(depName))
|
|
92
|
+
continue;
|
|
93
|
+
visited.add(depName);
|
|
94
|
+
// Check nested node_modules first
|
|
95
|
+
let depPath = (0, path_1.join)(packagePath, 'node_modules', depName);
|
|
96
|
+
if (!(0, fs_1.existsSync)(depPath)) {
|
|
97
|
+
depPath = (0, path_1.join)(cwd, 'node_modules', depName);
|
|
98
|
+
}
|
|
99
|
+
if ((0, fs_1.existsSync)(depPath)) {
|
|
100
|
+
const size = calculateJsSize(depPath);
|
|
101
|
+
if (size > 0) {
|
|
102
|
+
breakdown.push({ name: depName, size });
|
|
103
|
+
}
|
|
104
|
+
// Recursively get sub-dependencies
|
|
105
|
+
const subDeps = getDependencyTree(depPath, cwd, visited);
|
|
106
|
+
breakdown.push(...subDeps);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return breakdown;
|
|
110
|
+
}
|
|
111
|
+
function analyzeSizeMap(packageName, cwd = process.cwd()) {
|
|
112
|
+
const packagePath = findPackagePath(packageName, cwd);
|
|
113
|
+
if (!packagePath) {
|
|
114
|
+
throw new Error(`Package "${packageName}" not found in node_modules`);
|
|
115
|
+
}
|
|
116
|
+
const ownSize = calculateJsSize(packagePath);
|
|
117
|
+
const visited = new Set([packageName]);
|
|
118
|
+
const depBreakdown = getDependencyTree(packagePath, cwd, visited);
|
|
119
|
+
const breakdown = [
|
|
120
|
+
{ name: packageName, size: ownSize },
|
|
121
|
+
...depBreakdown.sort((a, b) => b.size - a.size)
|
|
122
|
+
];
|
|
123
|
+
const totalSize = breakdown.reduce((sum, item) => sum + item.size, 0);
|
|
124
|
+
const nodeModulesSize = getNodeModulesSize(cwd);
|
|
125
|
+
const percentOfNodeModules = nodeModulesSize > 0 ? (totalSize / nodeModulesSize) * 100 : 0;
|
|
126
|
+
return {
|
|
127
|
+
packageName,
|
|
128
|
+
totalSize,
|
|
129
|
+
breakdown,
|
|
130
|
+
nodeModulesSize,
|
|
131
|
+
percentOfNodeModules
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=sizeMapAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sizeMapAnalyzer.js","sourceRoot":"","sources":["../src/sizeMapAnalyzer.ts"],"names":[],"mappings":"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"}
|