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 CHANGED
@@ -42,24 +42,22 @@ npm install -g packlyze
42
42
  npx packlyze --help
43
43
  ```
44
44
 
45
- **2. Generate a stats file from your bundler (e.g., webpack):**
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: Generate Stats File**
79
+ ### **Step 2: Analyze with Packlyze (One Command!)**
82
80
  ```bash
83
- # Make sure webpack is installed
84
- npm install --save-dev webpack webpack-cli
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
- ### **Step 3: Analyze with Packlyze**
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
- # Basic analysis
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
- # Then regenerate stats.json
113
- npx webpack --profile --json stats.json
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
- # Then regenerate stats.json
125
- npx webpack --profile --json stats.json
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
- Make sure `stats.json` exists in your folder.
152
- Generate it using your bundler (see above).
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;IAqN7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8I3B,OAAO,CAAC,SAAS;IA6DjB,OAAO,CAAC,aAAa;IAmYf,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"}
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"}