Skip to content

Commit 48aad3e

Browse files
committed
fixed webpack#179 typo in OccurenceOrderPlugin
1 parent ee30c84 commit 48aad3e

File tree

4 files changed

+86
-80
lines changed

4 files changed

+86
-80
lines changed

lib/WebpackOptionsApply.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,9 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
200200
compiler.apply(new RecordIdsPlugin());
201201

202202
if(options.optimize && options.optimize.occurenceOrder) {
203-
compiler.apply(new MovedToPluginWarningPlugin("optimize.occurenceOrder", "optimize.OccurenceOrderPlugin"));
204-
var OccurenceOrderPlugin = require("./optimize/OccurenceOrderPlugin");
205-
compiler.apply(new OccurenceOrderPlugin(options.optimize.occurenceOrderPreferEntry));
203+
compiler.apply(new MovedToPluginWarningPlugin("optimize.occurenceOrder", "optimize.OccurrenceOrderPlugin"));
204+
var OccurrenceOrderPlugin = require("./optimize/OccurrenceOrderPlugin");
205+
compiler.apply(new OccurrenceOrderPlugin(options.optimize.occurenceOrderPreferEntry));
206206
}
207207

208208
if(options.optimize && options.optimize.minChunkSize) {

lib/optimize/OccurenceOrderPlugin.js

Lines changed: 1 addition & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -2,80 +2,4 @@
22
MIT License http://www.opensource.org/licenses/mit-license.php
33
Author Tobias Koppers @sokra
44
*/
5-
function OccurenceOrderPlugin(preferEntry) {
6-
this.preferEntry = preferEntry;
7-
}
8-
module.exports = OccurenceOrderPlugin;
9-
OccurenceOrderPlugin.prototype.apply = function(compiler) {
10-
var preferEntry = this.preferEntry;
11-
compiler.plugin("compilation", function(compilation) {
12-
compilation.plugin("optimize-module-order", function(modules) {
13-
function entryChunks(m) {
14-
return m.chunks.filter(function(c) {
15-
return c.initial;
16-
}).length;
17-
}
18-
function occursInEntry(m) {
19-
return m.reasons.map(function(r) {
20-
if(!r.module) return 0;
21-
return entryChunks(r.module);
22-
}).reduce(function(a, b) { return a+b; }, 0) + entryChunks(m);
23-
}
24-
function occurs(m) {
25-
return m.reasons.map(function(r) {
26-
if(!r.module) return 0;
27-
return r.module.chunks.length;
28-
}).reduce(function(a, b) { return a+b; }, 0) + m.chunks.length;
29-
}
30-
modules.sort(function(a, b) {
31-
if(preferEntry) {
32-
var aEntryOccurs = occursInEntry(a);
33-
var bEntryOccurs = occursInEntry(b);
34-
if(aEntryOccurs > bEntryOccurs) return -1;
35-
if(aEntryOccurs < bEntryOccurs) return 1;
36-
}
37-
var aOccurs = occurs(a);
38-
var bOccurs = occurs(b);
39-
if(aOccurs > bOccurs) return -1;
40-
if(aOccurs < bOccurs) return 1;
41-
if(a.identifier() > b.identifier()) return 1;
42-
if(a.identifier() < b.identifier()) return -1;
43-
return 0;
44-
});
45-
});
46-
compilation.plugin("optimize-chunk-order", function(chunks) {
47-
function occursInEntry(c) {
48-
return c.parents.filter(function(p) {
49-
return p.initial;
50-
}).length + (c.entry ? 1 : 0);
51-
}
52-
function occurs(c) {
53-
return c.blocks.length + (c.entry ? 1 : 0);
54-
}
55-
chunks.forEach(function(c) {
56-
c.modules.sort(function(a, b) {
57-
if(a.identifier() > b.identifier()) return 1;
58-
if(a.identifier() < b.identifier()) return -1;
59-
return 0;
60-
});
61-
});
62-
chunks.sort(function(a, b) {
63-
var aEntryOccurs = occursInEntry(a);
64-
var bEntryOccurs = occursInEntry(b);
65-
if(aEntryOccurs > bEntryOccurs) return -1;
66-
if(aEntryOccurs < bEntryOccurs) return 1;
67-
var aOccurs = occurs(a);
68-
var bOccurs = occurs(b);
69-
if(aOccurs > bOccurs) return -1;
70-
if(aOccurs < bOccurs) return 1;
71-
if(a.modules.length > b.modules.length) return -1;
72-
if(a.modules.length < b.modules.length) return 1;
73-
for(var i = 0; i < a.modules.length; i++) {
74-
if(a.modules[i].identifier() > b.modules[i].identifier()) return -1;
75-
if(a.modules[i].identifier() < b.modules[i].identifier()) return 1;
76-
}
77-
return 0;
78-
});
79-
});
80-
});
81-
};
5+
module.exports = require("./OccurrenceOrderPlugin");
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Tobias Koppers @sokra
4+
*/
5+
function OccurrenceOrderPlugin(preferEntry) {
6+
this.preferEntry = preferEntry;
7+
}
8+
module.exports = OccurrenceOrderPlugin;
9+
OccurrenceOrderPlugin.prototype.apply = function(compiler) {
10+
var preferEntry = this.preferEntry;
11+
compiler.plugin("compilation", function(compilation) {
12+
compilation.plugin("optimize-module-order", function(modules) {
13+
function entryChunks(m) {
14+
return m.chunks.filter(function(c) {
15+
return c.initial;
16+
}).length;
17+
}
18+
function occursInEntry(m) {
19+
return m.reasons.map(function(r) {
20+
if(!r.module) return 0;
21+
return entryChunks(r.module);
22+
}).reduce(function(a, b) { return a+b; }, 0) + entryChunks(m);
23+
}
24+
function occurs(m) {
25+
return m.reasons.map(function(r) {
26+
if(!r.module) return 0;
27+
return r.module.chunks.length;
28+
}).reduce(function(a, b) { return a+b; }, 0) + m.chunks.length;
29+
}
30+
modules.sort(function(a, b) {
31+
if(preferEntry) {
32+
var aEntryOccurs = occursInEntry(a);
33+
var bEntryOccurs = occursInEntry(b);
34+
if(aEntryOccurs > bEntryOccurs) return -1;
35+
if(aEntryOccurs < bEntryOccurs) return 1;
36+
}
37+
var aOccurs = occurs(a);
38+
var bOccurs = occurs(b);
39+
if(aOccurs > bOccurs) return -1;
40+
if(aOccurs < bOccurs) return 1;
41+
if(a.identifier() > b.identifier()) return 1;
42+
if(a.identifier() < b.identifier()) return -1;
43+
return 0;
44+
});
45+
});
46+
compilation.plugin("optimize-chunk-order", function(chunks) {
47+
function occursInEntry(c) {
48+
return c.parents.filter(function(p) {
49+
return p.initial;
50+
}).length + (c.entry ? 1 : 0);
51+
}
52+
function occurs(c) {
53+
return c.blocks.length + (c.entry ? 1 : 0);
54+
}
55+
chunks.forEach(function(c) {
56+
c.modules.sort(function(a, b) {
57+
if(a.identifier() > b.identifier()) return 1;
58+
if(a.identifier() < b.identifier()) return -1;
59+
return 0;
60+
});
61+
});
62+
chunks.sort(function(a, b) {
63+
var aEntryOccurs = occursInEntry(a);
64+
var bEntryOccurs = occursInEntry(b);
65+
if(aEntryOccurs > bEntryOccurs) return -1;
66+
if(aEntryOccurs < bEntryOccurs) return 1;
67+
var aOccurs = occurs(a);
68+
var bOccurs = occurs(b);
69+
if(aOccurs > bOccurs) return -1;
70+
if(aOccurs < bOccurs) return 1;
71+
if(a.modules.length > b.modules.length) return -1;
72+
if(a.modules.length < b.modules.length) return 1;
73+
for(var i = 0; i < a.modules.length; i++) {
74+
if(a.modules[i].identifier() > b.modules[i].identifier()) return -1;
75+
if(a.modules[i].identifier() < b.modules[i].identifier()) return 1;
76+
}
77+
return 0;
78+
});
79+
});
80+
});
81+
};

lib/webpack.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ exportPlugins(exports.optimize = {}, "./optimize", [
6060
"LimitChunkCountPlugin",
6161
"MinChunkSizePlugin",
6262
"OccurenceOrderPlugin",
63+
"OccurrenceOrderPlugin",
6364
"UglifyJsPlugin"
6465
]);
6566
exportPlugins(exports.dependencies = {}, "./dependencies", [

0 commit comments

Comments
 (0)