Commit fbfa382
fix: prevent empty JS file generation for CSS-only entry points
When CSS files are used as entry points (e.g., `entry: { styles: './styles.css' }`),
webpack generates an unnecessary empty .js file alongside the CSS output.
Root cause: `chunkHasJs()` returns true for any chunk with entry modules
without checking their source types, and `chunkHasRuntimeOrJs()` returns
true whenever runtime modules exist, even when there are no JavaScript
entry modules that need bootstrapping.
Fix:
- `chunkHasJs()`: Check entry module source types instead of blindly
returning true for any entry module. Only return true when at least
one entry module has JavaScript source type.
- `chunkHasRuntimeOrJs()`: When runtime modules exist but there are
entry modules in the chunk, verify that at least one entry module
has JavaScript source type before emitting JS. For standalone runtime
chunks (optimization.runtimeChunk: true), keep JS emission since the
runtime bootstrap is needed for other entry chunks.
Fixes #11671
Co-authored-by: Cursor <[email protected]>1 parent a089954 commit fbfa382
File tree
2 files changed
+32
-9
lines changed- lib/javascript
- test/configCases/asset-modules/only-entry
2 files changed
+32
-9
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
85 | 91 | | |
86 | 92 | | |
87 | 93 | | |
| |||
94 | 100 | | |
95 | 101 | | |
96 | 102 | | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
97 | 107 | | |
98 | 108 | | |
99 | 109 | | |
100 | 110 | | |
101 | 111 | | |
102 | 112 | | |
103 | | - | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
104 | 126 | | |
105 | 127 | | |
106 | | - | |
107 | | - | |
108 | | - | |
| 128 | + | |
109 | 129 | | |
110 | 130 | | |
111 | 131 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
34 | | - | |
| 35 | + | |
35 | 36 | | |
36 | 37 | | |
37 | 38 | | |
| |||
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
43 | | - | |
| 44 | + | |
| 45 | + | |
44 | 46 | | |
45 | 47 | | |
46 | 48 | | |
| |||
50 | 52 | | |
51 | 53 | | |
52 | 54 | | |
53 | | - | |
| 55 | + | |
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
| |||
59 | 61 | | |
60 | 62 | | |
61 | 63 | | |
| 64 | + | |
62 | 65 | | |
63 | 66 | | |
64 | 67 | | |
| |||
0 commit comments