packlyze 4.0.0 → 4.0.2
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 +31 -32
- package/dist/analyzer/packlyze.d.ts +32 -0
- package/dist/analyzer/packlyze.d.ts.map +1 -1
- package/dist/analyzer/packlyze.js +628 -27
- package/dist/analyzer/packlyze.js.map +1 -1
- package/dist/cli.js +76 -3
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -42,24 +42,22 @@ npm install -g packlyze
|
|
|
42
42
|
npx packlyze --help
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
**2.
|
|
46
|
-
|
|
47
|
-
> ⚠️ **Important:**
|
|
48
|
-
> You must generate a valid JSON stats file before running Packlyze.
|
|
49
|
-
> For webpack, use the following command in your project folder:
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
npx webpack --profile --json stats.json
|
|
53
|
-
```
|
|
54
|
-
- This will create a readable `stats.json` file in your project directory.
|
|
55
|
-
|
|
56
|
-
**3. Run Packlyze analysis (CLI):**
|
|
45
|
+
**2. Run Packlyze analysis (CLI):**
|
|
57
46
|
```bash
|
|
58
47
|
packlyze analyze stats.json
|
|
59
48
|
# or (if using npx)
|
|
60
49
|
npx packlyze analyze stats.json
|
|
61
50
|
```
|
|
62
51
|
|
|
52
|
+
> ✨ **New!** Packlyze automatically generates `stats.json` if it doesn't exist!
|
|
53
|
+
> If `stats.json` is missing, Packlyze will run `npx webpack --profile --json stats.json` for you automatically, then proceed with the analysis.
|
|
54
|
+
|
|
55
|
+
**3. (Optional) Generate stats manually:**
|
|
56
|
+
```bash
|
|
57
|
+
# If you prefer to generate stats.json yourself:
|
|
58
|
+
npx webpack --profile --json stats.json
|
|
59
|
+
```
|
|
60
|
+
|
|
63
61
|
**4. (Optional) Output an HTML report:**
|
|
64
62
|
```bash
|
|
65
63
|
packlyze analyze stats.json -o ./reports/bundle-report.html
|
|
@@ -78,18 +76,22 @@ npm install -g packlyze
|
|
|
78
76
|
npx packlyze --help
|
|
79
77
|
```
|
|
80
78
|
|
|
81
|
-
### **Step 2:
|
|
79
|
+
### **Step 2: Analyze with Packlyze (One Command!)**
|
|
82
80
|
```bash
|
|
83
|
-
#
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
# Generate stats.json
|
|
87
|
-
npx webpack --profile --json stats.json
|
|
81
|
+
# Packlyze automatically generates stats.json if it doesn't exist!
|
|
82
|
+
packlyze analyze stats.json
|
|
88
83
|
```
|
|
89
84
|
|
|
90
|
-
|
|
85
|
+
> ✨ **Automatic Stats Generation:**
|
|
86
|
+
> If `stats.json` doesn't exist, Packlyze will automatically run `npx webpack --profile --json stats.json` for you, then proceed with the analysis. No manual steps needed!
|
|
87
|
+
|
|
88
|
+
### **Step 3: (Optional) Generate Stats Manually**
|
|
91
89
|
```bash
|
|
92
|
-
#
|
|
90
|
+
# If you prefer to generate stats.json yourself:
|
|
91
|
+
npm install --save-dev webpack webpack-cli
|
|
92
|
+
npx webpack --profile --json stats.json
|
|
93
|
+
|
|
94
|
+
# Then analyze
|
|
93
95
|
packlyze analyze stats.json
|
|
94
96
|
|
|
95
97
|
# With auto-install for missing dependencies
|
|
@@ -109,11 +111,8 @@ packlyze analyze stats.json --json
|
|
|
109
111
|
# Packlyze will show you the exact command, or use auto-install:
|
|
110
112
|
packlyze analyze stats.json --auto-install
|
|
111
113
|
|
|
112
|
-
#
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
# Analyze again
|
|
116
|
-
packlyze analyze stats.json
|
|
114
|
+
# Packlyze will automatically regenerate stats.json and analyze again
|
|
115
|
+
# (No need to run webpack manually!)
|
|
117
116
|
```
|
|
118
117
|
|
|
119
118
|
**If you see path alias errors:**
|
|
@@ -121,11 +120,8 @@ packlyze analyze stats.json
|
|
|
121
120
|
# Packlyze will automatically regenerate your webpack config with path aliases
|
|
122
121
|
packlyze analyze stats.json
|
|
123
122
|
|
|
124
|
-
#
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
# Analyze again
|
|
128
|
-
packlyze analyze stats.json
|
|
123
|
+
# Packlyze will automatically regenerate stats.json and analyze again
|
|
124
|
+
# (No need to run webpack manually - Packlyze does it for you!)
|
|
129
125
|
```
|
|
130
126
|
|
|
131
127
|
**If you see entry point errors:**
|
|
@@ -148,8 +144,11 @@ packlyze analyze stats.json
|
|
|
148
144
|
## 🐛 Common Issues & Solutions
|
|
149
145
|
|
|
150
146
|
### **"Stats file not found"**
|
|
151
|
-
|
|
152
|
-
|
|
147
|
+
✨ **Packlyze automatically generates `stats.json` for you!**
|
|
148
|
+
If auto-generation fails, you can generate it manually:
|
|
149
|
+
```bash
|
|
150
|
+
npx webpack --profile --json stats.json
|
|
151
|
+
```
|
|
153
152
|
|
|
154
153
|
### **"Invalid JSON in stats file"**
|
|
155
154
|
Your stats file may be corrupted or not plain JSON.
|
|
@@ -30,6 +30,38 @@ export declare class Packlyze {
|
|
|
30
30
|
* Find project root by looking for package.json
|
|
31
31
|
*/
|
|
32
32
|
private findProjectRoot;
|
|
33
|
+
/**
|
|
34
|
+
* Detect missing file extensions in resolve.extensions
|
|
35
|
+
* Example: Error resolving './App' when App.tsx exists but .tsx not in extensions
|
|
36
|
+
*/
|
|
37
|
+
private detectMissingExtensions;
|
|
38
|
+
/**
|
|
39
|
+
* Detect missing CSS/image loaders
|
|
40
|
+
*/
|
|
41
|
+
private detectMissingAssetLoaders;
|
|
42
|
+
/**
|
|
43
|
+
* Detect baseUrl usage without proper webpack configuration
|
|
44
|
+
*/
|
|
45
|
+
private detectBaseUrlIssues;
|
|
46
|
+
/**
|
|
47
|
+
* Detect case-sensitivity issues
|
|
48
|
+
*/
|
|
49
|
+
private detectCaseSensitivityIssues;
|
|
50
|
+
/**
|
|
51
|
+
* Extract alias patterns from error messages
|
|
52
|
+
* Example: "Can't resolve '@/hooks/useAuth'" -> { alias: '@', path: '@/hooks/useAuth' }
|
|
53
|
+
*/
|
|
54
|
+
private extractAliasFromErrors;
|
|
55
|
+
/**
|
|
56
|
+
* Infer alias mapping by analyzing project structure
|
|
57
|
+
* Example: '@' -> 'src' (most common convention)
|
|
58
|
+
*/
|
|
59
|
+
private inferAliasMapping;
|
|
60
|
+
/**
|
|
61
|
+
* Scan source files for alias usage patterns
|
|
62
|
+
* Example: Finds '@/hooks/useAuth' in source files -> detects '@' alias is needed
|
|
63
|
+
*/
|
|
64
|
+
private scanSourceFilesForAliases;
|
|
33
65
|
/**
|
|
34
66
|
* Extract TypeScript path aliases from tsconfig.json
|
|
35
67
|
* Note: Does not handle "extends" - only reads the direct tsconfig.json file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packlyze.d.ts","sourceRoot":"","sources":["../../src/analyzer/packlyze.ts"],"names":[],"mappings":"AAGA,OAAO,EAUL,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,qBAAa,QAAQ;IACnB,OAAO,CAAC,SAAS,CAcV;IACP,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAC,CAA4B;gBAEnC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IASrE,OAAO,CAAC,GAAG;IAMX;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAuGxB;;OAEG;IACU,0BAA0B,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpF;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA2DjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqD9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAmIhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsE1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"packlyze.d.ts","sourceRoot":"","sources":["../../src/analyzer/packlyze.ts"],"names":[],"mappings":"AAGA,OAAO,EAUL,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,qBAAa,QAAQ;IACnB,OAAO,CAAC,SAAS,CAcV;IACP,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAC,CAA4B;gBAEnC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IASrE,OAAO,CAAC,GAAG;IAMX;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAuGxB;;OAEG;IACU,0BAA0B,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpF;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA2DjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqD9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IA+B/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAyBjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAmCnC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA8DzB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA8HjC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAmIhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsE1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0O7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8I3B,OAAO,CAAC,SAAS;IA6DjB,OAAO,CAAC,aAAa;IAmqBf,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;IAuCxC,OAAO,CAAC,kBAAkB;IAqG1B,OAAO,CAAC,YAAY;IA2CpB,OAAO,CAAC,gBAAgB;IAuCxB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,uBAAuB;IAkD/B,OAAO,CAAC,uBAAuB;IAmB/B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,cAAc;IAoCtB,OAAO,CAAC,eAAe;IAqCvB,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,aAAa;IAgErB,OAAO,CAAC,gBAAgB;CAuBzB"}
|