@@ -23,7 +23,10 @@ With `minChunks = 3`:
2323 * chunk: c
2424 * chunk: c, d
2525
26- It's also possible to provide a function instead of a number for ` minChunks ` . The function is called for each module to decide if the module should be moved or not (see pageC and pageD).
26+ It's also possible to provide a function instead of a number for ` minChunks ` . The function is called for each module to decide if the module should be moved or not (see pageC and pageD):
27+
28+ * pageC: a, c, d
29+ * chunk: b
2730
2831# page.js
2932
@@ -39,167 +42,256 @@ require(["./a", "./b", "./c", "./d"]);
3942``` javascript
4043var path = require (" path" );
4144var CommonsChunkPlugin = require (" ../../lib/optimize/CommonsChunkPlugin" );
42- module .exports = {
45+ var outputOptions = {
46+ path: path .join (__dirname , " js" ),
47+ filename: " [name].bundle.js" ,
48+ chunkFilename: " [id].chunk.js"
49+ };
50+ module .exports = [{
51+ name: " page" ,
4352 entry: {
44- pageA: " ./page?A" ,
45- pageB: " ./page?B" ,
46- pageC: " ./page?C" ,
47- pageD: " ./page?D"
53+ page: " ./page"
4854 },
49- output: {
50- path: path .join (__dirname , " js" ),
51- filename: " [name].bundle.js" ,
52- chunkFilename: " [id].chunk.js"
55+ output: outputOptions
56+ }, {
57+ name: " pageA" ,
58+ entry: {
59+ pageA: " ./page"
5360 },
61+ output: outputOptions,
5462 plugins: [
55- // check for common modules in children of pageA and move them to the parent
63+ // check for common modules in children of pageA and move them to the parent
5664 new CommonsChunkPlugin ({
5765 name: " pageA" ,
5866 children: true
5967 }),
60-
68+ ]
69+ }, {
70+ name: " pageB" ,
71+ entry: {
72+ pageB: " ./page"
73+ },
74+ output: outputOptions,
75+ plugins: [
6176 // the same for pageB but move them if at least 3 children share the module
6277 new CommonsChunkPlugin ({
6378 name: " pageB" ,
6479 children: true ,
6580 minChunks: 3
6681 }),
67-
82+ ]
83+ }, {
84+ name: " pageC" ,
85+ entry: {
86+ pageC: " ./page"
87+ },
88+ output: outputOptions,
89+ plugins: [
6890 // the same for pageC and pageD but with a custom logic for moving
6991 new CommonsChunkPlugin ({
70- names : [ " pageC" , " pageD " ] ,
92+ name : " pageC" ,
7193 children: true ,
7294 minChunks : function (module , count ) {
7395 // move only module "b"
74- return / b\. js$ / .test (module .identifier ());
96+ return ! / b\. js/ .test (module .identifier ());
7597 }
7698 })
7799 ]
78- }
100+ }];
79101```
80102
81103# Info
82104
83105## Uncompressed
84106
85107```
86- Hash: cc02f492e44f68d8c237
87- Version: webpack 2.2.0-rc.2
88- Asset Size Chunks Chunk Names
89- 0.chunk.js 779 bytes 0, 1, 2, 3 [emitted]
90- 1.chunk.js 589 bytes 1, 2, 3 [emitted]
91- 2.chunk.js 399 bytes 2, 3 [emitted]
92- 3.chunk.js 209 bytes 3 [emitted]
93- pageD.bundle.js 6.44 kB 4 [emitted] pageD
94- pageC.bundle.js 6.44 kB 5 [emitted] pageC
95- pageB.bundle.js 6.44 kB 6 [emitted] pageB
96- pageA.bundle.js 6.38 kB 7 [emitted] pageA
97- Entrypoint pageA = pageA.bundle.js
98- Entrypoint pageB = pageB.bundle.js
99- Entrypoint pageC = pageC.bundle.js
100- Entrypoint pageD = pageD.bundle.js
101- chunk {0} 0.chunk.js 84 bytes {4} {5} {6} {7} [rendered]
102- > duplicate [4] ./page.js?A 4:0-37
103- > duplicate [5] ./page.js?B 4:0-37
104- > duplicate [6] ./page.js?C 4:0-37
105- > duplicate [7] ./page.js?D 4:0-37
106- [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
107- [1] ./b.js 21 bytes {0} {1} {2} [built]
108- [2] ./c.js 21 bytes {0} {1} [built]
109- [3] ./d.js 21 bytes {0} [built]
110- chunk {1} 1.chunk.js 63 bytes {4} {5} {6} {7} [rendered]
111- > duplicate [4] ./page.js?A 3:0-30
112- > duplicate [5] ./page.js?B 3:0-30
113- > duplicate [6] ./page.js?C 3:0-30
114- > duplicate [7] ./page.js?D 3:0-30
115- [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
116- [1] ./b.js 21 bytes {0} {1} {2} [built]
117- [2] ./c.js 21 bytes {0} {1} [built]
118- chunk {2} 2.chunk.js 42 bytes {4} {5} {6} {7} [rendered]
119- > duplicate [4] ./page.js?A 2:0-23
120- > duplicate [5] ./page.js?B 2:0-23
121- > duplicate [6] ./page.js?C 2:0-23
122- > duplicate [7] ./page.js?D 2:0-23
123- [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
124- [1] ./b.js 21 bytes {0} {1} {2} [built]
125- chunk {3} 3.chunk.js 21 bytes {4} {5} {6} {7} [rendered]
126- > duplicate [4] ./page.js?A 1:0-16
127- > duplicate [5] ./page.js?B 1:0-16
128- > duplicate [6] ./page.js?C 1:0-16
129- > duplicate [7] ./page.js?D 1:0-16
130- [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
131- chunk {4} pageD.bundle.js (pageD) 118 bytes [entry] [rendered]
132- > pageD [7] ./page.js?D
133- [7] ./page.js?D 118 bytes {4} [built]
134- chunk {5} pageC.bundle.js (pageC) 118 bytes [entry] [rendered]
135- > pageC [6] ./page.js?C
136- [6] ./page.js?C 118 bytes {5} [built]
137- chunk {6} pageB.bundle.js (pageB) 118 bytes [entry] [rendered]
138- > pageB [5] ./page.js?B
139- [5] ./page.js?B 118 bytes {6} [built]
140- chunk {7} pageA.bundle.js (pageA) 118 bytes [entry] [rendered]
141- > pageA [4] ./page.js?A
142- [4] ./page.js?A 118 bytes {7} [built]
108+ Hash: 92649f18837fbb021129ea807ff9294488030e7d297a4b5e23527060dcf866a6fc0a7d0ef06171d3
109+ Version: webpack 2.2.1
110+ Child page:
111+ Hash: 92649f18837fbb021129
112+ Asset Size Chunks Chunk Names
113+ 0.chunk.js 787 bytes 0, 1, 2, 3 [emitted]
114+ 1.chunk.js 595 bytes 1, 2, 3 [emitted]
115+ 2.chunk.js 403 bytes 2, 3 [emitted]
116+ 3.chunk.js 211 bytes 3 [emitted]
117+ page.bundle.js 6.37 kB 4 [emitted] page
118+ Entrypoint page = page.bundle.js
119+ chunk {0} 0.chunk.js 84 bytes {4} [rendered]
120+ > [4] ./page.js 4:0-37
121+ [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
122+ [1] ./b.js 21 bytes {0} {1} {2} [built]
123+ [2] ./c.js 21 bytes {0} {1} [built]
124+ [3] ./d.js 21 bytes {0} [built]
125+ chunk {1} 1.chunk.js 63 bytes {4} [rendered]
126+ > [4] ./page.js 3:0-30
127+ [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
128+ [1] ./b.js 21 bytes {0} {1} {2} [built]
129+ [2] ./c.js 21 bytes {0} {1} [built]
130+ chunk {2} 2.chunk.js 42 bytes {4} [rendered]
131+ > [4] ./page.js 2:0-23
132+ [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
133+ [1] ./b.js 21 bytes {0} {1} {2} [built]
134+ chunk {3} 3.chunk.js 21 bytes {4} [rendered]
135+ > [4] ./page.js 1:0-16
136+ [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
137+ chunk {4} page.bundle.js (page) 118 bytes [entry] [rendered]
138+ > page [4] ./page.js
139+ [4] ./page.js 118 bytes {4} [built]
140+ Child pageA:
141+ Hash: ea807ff9294488030e7d
142+ Asset Size Chunks Chunk Names
143+ 0.chunk.js 604 bytes 0, 1, 2 [emitted]
144+ 1.chunk.js 412 bytes 1, 2 [emitted]
145+ 2.chunk.js 220 bytes 2 [emitted]
146+ pageA.bundle.js 6.57 kB 3 [emitted] pageA
147+ Entrypoint pageA = pageA.bundle.js
148+ chunk {0} 0.chunk.js 63 bytes {3} [rendered]
149+ > [4] ./page.js 4:0-37
150+ [1] ./b.js 21 bytes {0} {1} {2} [built]
151+ [2] ./c.js 21 bytes {0} {1} [built]
152+ [3] ./d.js 21 bytes {0} [built]
153+ chunk {1} 1.chunk.js 42 bytes {3} [rendered]
154+ > [4] ./page.js 3:0-30
155+ [1] ./b.js 21 bytes {0} {1} {2} [built]
156+ [2] ./c.js 21 bytes {0} {1} [built]
157+ chunk {2} 2.chunk.js 21 bytes {3} [rendered]
158+ > [4] ./page.js 2:0-23
159+ [1] ./b.js 21 bytes {0} {1} {2} [built]
160+ chunk {3} pageA.bundle.js (pageA) 139 bytes [entry] [rendered]
161+ > pageA [4] ./page.js
162+ [0] ./a.js 21 bytes {3} [built]
163+ [4] ./page.js 118 bytes {3} [built]
164+ Child pageB:
165+ Hash: 297a4b5e23527060dcf8
166+ Asset Size Chunks Chunk Names
167+ 0.chunk.js 421 bytes 0, 1 [emitted]
168+ 1.chunk.js 214 bytes 1 [emitted]
169+ pageB.bundle.js 6.73 kB 2 [emitted] pageB
170+ Entrypoint pageB = pageB.bundle.js
171+ chunk {0} 0.chunk.js 42 bytes {2} [rendered]
172+ > [4] ./page.js 4:0-37
173+ [2] ./c.js 21 bytes {0} {1} [built]
174+ [3] ./d.js 21 bytes {0} [built]
175+ chunk {1} 1.chunk.js 21 bytes {2} [rendered]
176+ > [4] ./page.js 3:0-30
177+ [2] ./c.js 21 bytes {0} {1} [built]
178+ chunk {2} pageB.bundle.js (pageB) 160 bytes [entry] [rendered]
179+ > pageB [4] ./page.js
180+ [0] ./a.js 21 bytes {2} [built]
181+ [1] ./b.js 21 bytes {2} [built]
182+ [4] ./page.js 118 bytes {2} [built]
183+ Child pageC:
184+ Hash: 66a6fc0a7d0ef06171d3
185+ Asset Size Chunks Chunk Names
186+ 0.chunk.js 220 bytes 0 [emitted]
187+ pageC.bundle.js 6.96 kB 1 [emitted] pageC
188+ Entrypoint pageC = pageC.bundle.js
189+ chunk {0} 0.chunk.js 21 bytes {1} [rendered]
190+ > duplicate [4] ./page.js 2:0-23
191+ > duplicate [4] ./page.js 3:0-30
192+ > duplicate [4] ./page.js 4:0-37
193+ [1] ./b.js 21 bytes {0} [built]
194+ chunk {1} pageC.bundle.js (pageC) 181 bytes [entry] [rendered]
195+ > pageC [4] ./page.js
196+ [0] ./a.js 21 bytes {1} [built]
197+ [2] ./c.js 21 bytes {1} [built]
198+ [3] ./d.js 21 bytes {1} [built]
199+ [4] ./page.js 118 bytes {1} [built]
143200```
144201
145202## Minimized (uglify-js, no zip)
146203
147204```
148- Hash: cc02f492e44f68d8c237
149- Version: webpack 2.2.0-rc.2
150- Asset Size Chunks Chunk Names
151- 0.chunk.js 142 bytes 0, 1, 2, 3 [emitted]
152- 1.chunk.js 111 bytes 1, 2, 3 [emitted]
153- 2.chunk.js 80 bytes 2, 3 [emitted]
154- 3.chunk.js 49 bytes 3 [emitted]
155- pageD.bundle.js 1.57 kB 4 [emitted] pageD
156- pageC.bundle.js 1.57 kB 5 [emitted] pageC
157- pageB.bundle.js 1.57 kB 6 [emitted] pageB
158- pageA.bundle.js 1.57 kB 7 [emitted] pageA
159- Entrypoint pageA = pageA.bundle.js
160- Entrypoint pageB = pageB.bundle.js
161- Entrypoint pageC = pageC.bundle.js
162- Entrypoint pageD = pageD.bundle.js
163- chunk {0} 0.chunk.js 84 bytes {4} {5} {6} {7} [rendered]
164- > duplicate [4] ./page.js?A 4:0-37
165- > duplicate [5] ./page.js?B 4:0-37
166- > duplicate [6] ./page.js?C 4:0-37
167- > duplicate [7] ./page.js?D 4:0-37
168- [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
169- [1] ./b.js 21 bytes {0} {1} {2} [built]
170- [2] ./c.js 21 bytes {0} {1} [built]
171- [3] ./d.js 21 bytes {0} [built]
172- chunk {1} 1.chunk.js 63 bytes {4} {5} {6} {7} [rendered]
173- > duplicate [4] ./page.js?A 3:0-30
174- > duplicate [5] ./page.js?B 3:0-30
175- > duplicate [6] ./page.js?C 3:0-30
176- > duplicate [7] ./page.js?D 3:0-30
177- [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
178- [1] ./b.js 21 bytes {0} {1} {2} [built]
179- [2] ./c.js 21 bytes {0} {1} [built]
180- chunk {2} 2.chunk.js 42 bytes {4} {5} {6} {7} [rendered]
181- > duplicate [4] ./page.js?A 2:0-23
182- > duplicate [5] ./page.js?B 2:0-23
183- > duplicate [6] ./page.js?C 2:0-23
184- > duplicate [7] ./page.js?D 2:0-23
185- [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
186- [1] ./b.js 21 bytes {0} {1} {2} [built]
187- chunk {3} 3.chunk.js 21 bytes {4} {5} {6} {7} [rendered]
188- > duplicate [4] ./page.js?A 1:0-16
189- > duplicate [5] ./page.js?B 1:0-16
190- > duplicate [6] ./page.js?C 1:0-16
191- > duplicate [7] ./page.js?D 1:0-16
192- [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
193- chunk {4} pageD.bundle.js (pageD) 118 bytes [entry] [rendered]
194- > pageD [7] ./page.js?D
195- [7] ./page.js?D 118 bytes {4} [built]
196- chunk {5} pageC.bundle.js (pageC) 118 bytes [entry] [rendered]
197- > pageC [6] ./page.js?C
198- [6] ./page.js?C 118 bytes {5} [built]
199- chunk {6} pageB.bundle.js (pageB) 118 bytes [entry] [rendered]
200- > pageB [5] ./page.js?B
201- [5] ./page.js?B 118 bytes {6} [built]
202- chunk {7} pageA.bundle.js (pageA) 118 bytes [entry] [rendered]
203- > pageA [4] ./page.js?A
204- [4] ./page.js?A 118 bytes {7} [built]
205+ Hash: 92649f18837fbb021129ea807ff9294488030e7d297a4b5e23527060dcf866a6fc0a7d0ef06171d3
206+ Version: webpack 2.2.1
207+ Child page:
208+ Hash: 92649f18837fbb021129
209+ Asset Size Chunks Chunk Names
210+ 0.chunk.js 142 bytes 0, 1, 2, 3 [emitted]
211+ 1.chunk.js 111 bytes 1, 2, 3 [emitted]
212+ 2.chunk.js 80 bytes 2, 3 [emitted]
213+ 3.chunk.js 49 bytes 3 [emitted]
214+ page.bundle.js 1.57 kB 4 [emitted] page
215+ Entrypoint page = page.bundle.js
216+ chunk {0} 0.chunk.js 84 bytes {4} [rendered]
217+ > [4] ./page.js 4:0-37
218+ [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
219+ [1] ./b.js 21 bytes {0} {1} {2} [built]
220+ [2] ./c.js 21 bytes {0} {1} [built]
221+ [3] ./d.js 21 bytes {0} [built]
222+ chunk {1} 1.chunk.js 63 bytes {4} [rendered]
223+ > [4] ./page.js 3:0-30
224+ [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
225+ [1] ./b.js 21 bytes {0} {1} {2} [built]
226+ [2] ./c.js 21 bytes {0} {1} [built]
227+ chunk {2} 2.chunk.js 42 bytes {4} [rendered]
228+ > [4] ./page.js 2:0-23
229+ [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
230+ [1] ./b.js 21 bytes {0} {1} {2} [built]
231+ chunk {3} 3.chunk.js 21 bytes {4} [rendered]
232+ > [4] ./page.js 1:0-16
233+ [0] ./a.js 21 bytes {0} {1} {2} {3} [built]
234+ chunk {4} page.bundle.js (page) 118 bytes [entry] [rendered]
235+ > page [4] ./page.js
236+ [4] ./page.js 118 bytes {4} [built]
237+ Child pageA:
238+ Hash: ea807ff9294488030e7d
239+ Asset Size Chunks Chunk Names
240+ 0.chunk.js 112 bytes 0, 1, 2 [emitted]
241+ 1.chunk.js 81 bytes 1, 2 [emitted]
242+ 2.chunk.js 50 bytes 2 [emitted]
243+ pageA.bundle.js 1.61 kB 3 [emitted] pageA
244+ Entrypoint pageA = pageA.bundle.js
245+ chunk {0} 0.chunk.js 63 bytes {3} [rendered]
246+ > [4] ./page.js 4:0-37
247+ [1] ./b.js 21 bytes {0} {1} {2} [built]
248+ [2] ./c.js 21 bytes {0} {1} [built]
249+ [3] ./d.js 21 bytes {0} [built]
250+ chunk {1} 1.chunk.js 42 bytes {3} [rendered]
251+ > [4] ./page.js 3:0-30
252+ [1] ./b.js 21 bytes {0} {1} {2} [built]
253+ [2] ./c.js 21 bytes {0} {1} [built]
254+ chunk {2} 2.chunk.js 21 bytes {3} [rendered]
255+ > [4] ./page.js 2:0-23
256+ [1] ./b.js 21 bytes {0} {1} {2} [built]
257+ chunk {3} pageA.bundle.js (pageA) 139 bytes [entry] [rendered]
258+ > pageA [4] ./page.js
259+ [0] ./a.js 21 bytes {3} [built]
260+ [4] ./page.js 118 bytes {3} [built]
261+ Child pageB:
262+ Hash: 297a4b5e23527060dcf8
263+ Asset Size Chunks Chunk Names
264+ 0.chunk.js 82 bytes 0, 1 [emitted]
265+ 1.chunk.js 51 bytes 1 [emitted]
266+ pageB.bundle.js 1.65 kB 2 [emitted] pageB
267+ Entrypoint pageB = pageB.bundle.js
268+ chunk {0} 0.chunk.js 42 bytes {2} [rendered]
269+ > [4] ./page.js 4:0-37
270+ [2] ./c.js 21 bytes {0} {1} [built]
271+ [3] ./d.js 21 bytes {0} [built]
272+ chunk {1} 1.chunk.js 21 bytes {2} [rendered]
273+ > [4] ./page.js 3:0-30
274+ [2] ./c.js 21 bytes {0} {1} [built]
275+ chunk {2} pageB.bundle.js (pageB) 160 bytes [entry] [rendered]
276+ > pageB [4] ./page.js
277+ [0] ./a.js 21 bytes {2} [built]
278+ [1] ./b.js 21 bytes {2} [built]
279+ [4] ./page.js 118 bytes {2} [built]
280+ Child pageC:
281+ Hash: 66a6fc0a7d0ef06171d3
282+ Asset Size Chunks Chunk Names
283+ 0.chunk.js 50 bytes 0 [emitted]
284+ pageC.bundle.js 1.66 kB 1 [emitted] pageC
285+ Entrypoint pageC = pageC.bundle.js
286+ chunk {0} 0.chunk.js 21 bytes {1} [rendered]
287+ > duplicate [4] ./page.js 2:0-23
288+ > duplicate [4] ./page.js 3:0-30
289+ > duplicate [4] ./page.js 4:0-37
290+ [1] ./b.js 21 bytes {0} [built]
291+ chunk {1} pageC.bundle.js (pageC) 181 bytes [entry] [rendered]
292+ > pageC [4] ./page.js
293+ [0] ./a.js 21 bytes {1} [built]
294+ [2] ./c.js 21 bytes {1} [built]
295+ [3] ./d.js 21 bytes {1} [built]
296+ [4] ./page.js 118 bytes {1} [built]
205297```
0 commit comments