webpack 1.13.3 → 1.14.0
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/LICENSE +22 -22
- package/README.md +310 -310
- package/buildin/amd-define.js +1 -1
- package/buildin/amd-options.js +1 -1
- package/buildin/module.js +10 -10
- package/hot/dev-server.js +63 -63
- package/hot/log-apply-result.js +25 -25
- package/hot/only-dev-server.js +77 -77
- package/hot/poll.js +37 -37
- package/hot/signal.js +65 -65
- package/lib/APIPlugin.js +49 -49
- package/lib/AbstractPlugin.js +22 -22
- package/lib/AmdMainTemplatePlugin.js +43 -43
- package/lib/ArrayMap.js +50 -50
- package/lib/AsyncDependenciesBlock.js +39 -39
- package/lib/AutomaticPrefetchPlugin.js +35 -35
- package/lib/BannerPlugin.js +34 -34
- package/lib/BasicEvaluatedExpression.js +140 -140
- package/lib/CachePlugin.js +43 -43
- package/lib/CaseSensitiveModulesWarning.js +16 -16
- package/lib/Chunk.js +252 -252
- package/lib/ChunkRenderError.js +17 -17
- package/lib/ChunkTemplate.js +37 -37
- package/lib/CompatibilityPlugin.js +42 -42
- package/lib/Compilation.js +891 -891
- package/lib/Compiler.js +407 -407
- package/lib/ConcatSource.js +5 -5
- package/lib/ConstPlugin.js +54 -54
- package/lib/ContextModule.js +130 -130
- package/lib/ContextModuleFactory.js +132 -132
- package/lib/ContextReplacementPlugin.js +93 -93
- package/lib/CriticalDependenciesWarning.js +24 -24
- package/lib/DefinePlugin.js +126 -126
- package/lib/DelegatedModule.js +69 -69
- package/lib/DelegatedModuleFactoryPlugin.js +51 -51
- package/lib/DelegatedPlugin.js +21 -21
- package/lib/DependenciesBlock.js +57 -57
- package/lib/DependenciesBlockVariable.js +41 -41
- package/lib/Dependency.js +54 -54
- package/lib/DllEntryPlugin.js +32 -32
- package/lib/DllModule.js +55 -55
- package/lib/DllModuleFactory.js +18 -18
- package/lib/DllPlugin.js +30 -30
- package/lib/DllReferencePlugin.js +26 -26
- package/lib/EntryModuleNotFoundError.js +15 -15
- package/lib/EntryOptionPlugin.js +28 -28
- package/lib/EnvironmentPlugin.js +28 -28
- package/lib/EvalDevToolModulePlugin.js +17 -17
- package/lib/EvalDevToolModuleTemplatePlugin.js +29 -29
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +68 -68
- package/lib/EvalSourceMapDevToolPlugin.js +25 -25
- package/lib/ExtendedAPIPlugin.js +45 -45
- package/lib/ExternalModule.js +89 -89
- package/lib/ExternalModuleFactoryPlugin.js +86 -86
- package/lib/ExternalsPlugin.js +16 -16
- package/lib/FunctionModulePlugin.js +18 -18
- package/lib/FunctionModuleTemplatePlugin.js +39 -39
- package/lib/HotModuleReplacement.runtime.js +486 -486
- package/lib/HotModuleReplacementPlugin.js +223 -223
- package/lib/HotUpdateChunkTemplate.js +28 -28
- package/lib/IgnorePlugin.js +32 -32
- package/lib/JsonpChunkTemplatePlugin.js +26 -26
- package/lib/JsonpExportMainTemplatePlugin.js +28 -28
- package/lib/JsonpHotUpdateChunkTemplatePlugin.js +26 -26
- package/lib/JsonpMainTemplate.runtime.js +56 -56
- package/lib/JsonpMainTemplatePlugin.js +162 -162
- package/lib/JsonpTemplatePlugin.js +17 -17
- package/lib/LibManifestPlugin.js +49 -49
- package/lib/LibraryTemplatePlugin.js +77 -77
- package/lib/LoaderTargetPlugin.js +16 -16
- package/lib/MainTemplate.js +169 -169
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/Module.js +116 -116
- package/lib/ModuleFilenameHelpers.js +157 -157
- package/lib/ModuleNotFoundError.js +17 -17
- package/lib/ModuleParseError.js +26 -26
- package/lib/ModuleParserHelpers.js +21 -21
- package/lib/ModuleReason.js +9 -9
- package/lib/ModuleTemplate.js +23 -23
- package/lib/MovedToPluginWarningPlugin.js +17 -17
- package/lib/MultiCompiler.js +166 -166
- package/lib/MultiEntryPlugin.js +31 -31
- package/lib/MultiModule.js +71 -71
- package/lib/MultiModuleFactory.js +18 -18
- package/lib/NamedModulesPlugin.js +21 -21
- package/lib/NewWatchingPlugin.js +12 -12
- package/lib/NoErrorsPlugin.js +18 -18
- package/lib/NodeStuffPlugin.js +99 -99
- package/lib/NormalModule.js +322 -322
- package/lib/NormalModuleFactory.js +171 -171
- package/lib/NormalModuleReplacementPlugin.js +40 -40
- package/lib/NullFactory.js +10 -10
- package/lib/OldWatchingPlugin.js +14 -14
- package/lib/OptionsApply.js +10 -10
- package/lib/OriginalSource.js +5 -5
- package/lib/Parser.js +938 -938
- package/lib/PrefetchPlugin.js +25 -25
- package/lib/ProgressPlugin.js +80 -80
- package/lib/ProvidePlugin.js +48 -48
- package/lib/RawModule.js +65 -65
- package/lib/RawSource.js +5 -5
- package/lib/RecordIdsPlugin.js +130 -130
- package/lib/RequestShortener.js +56 -56
- package/lib/RequireJsStuffPlugin.js +38 -38
- package/lib/ResolverPlugin.js +34 -34
- package/lib/SetVarMainTemplatePlugin.js +36 -36
- package/lib/SingleEntryPlugin.js +24 -24
- package/lib/Source.js +5 -5
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +33 -33
- package/lib/SourceMapDevToolPlugin.js +168 -168
- package/lib/SourceMapSource.js +5 -5
- package/lib/Stats.js +732 -732
- package/lib/Template.js +119 -119
- package/lib/TemplatedPathPlugin.js +111 -111
- package/lib/UmdMainTemplatePlugin.js +146 -146
- package/lib/UnsupportedFeatureWarning.js +14 -14
- package/lib/WarnCaseSensitiveModulesPlugin.js +27 -27
- package/lib/WatchIgnorePlugin.js +45 -45
- package/lib/WebpackOptionsApply.js +376 -376
- package/lib/WebpackOptionsDefaulter.js +112 -112
- package/lib/dependencies/AMDDefineDependency.js +63 -63
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +240 -240
- package/lib/dependencies/AMDPlugin.js +115 -115
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -34
- package/lib/dependencies/AMDRequireContextDependency.js +18 -18
- package/lib/dependencies/AMDRequireDependenciesBlock.js +25 -25
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +145 -145
- package/lib/dependencies/AMDRequireDependency.js +64 -64
- package/lib/dependencies/AMDRequireItemDependency.js +17 -17
- package/lib/dependencies/CommonJsPlugin.js +93 -93
- package/lib/dependencies/CommonJsRequireContextDependency.js +18 -18
- package/lib/dependencies/CommonJsRequireDependency.js +17 -17
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +91 -91
- package/lib/dependencies/ConstDependency.js +29 -29
- package/lib/dependencies/ContextDependency.js +24 -24
- package/lib/dependencies/ContextDependencyHelpers.js +34 -34
- package/lib/dependencies/ContextDependencyTemplateAsId.js +22 -22
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +31 -31
- package/lib/dependencies/ContextElementDependency.js +17 -17
- package/lib/dependencies/DelegatedSourceDependency.js +14 -14
- package/lib/dependencies/DepBlockHelpers.js +41 -41
- package/lib/dependencies/DllEntryDependency.js +17 -17
- package/lib/dependencies/LabeledExportsDependency.js +21 -21
- package/lib/dependencies/LabeledModuleDependency.js +36 -36
- package/lib/dependencies/LabeledModuleDependencyParserPlugin.js +76 -76
- package/lib/dependencies/LabeledModulesPlugin.js +26 -26
- package/lib/dependencies/LoaderDependency.js +14 -14
- package/lib/dependencies/LoaderPlugin.js +61 -61
- package/lib/dependencies/LocalModule.js +19 -19
- package/lib/dependencies/LocalModuleDependency.js +23 -23
- package/lib/dependencies/LocalModulesHelpers.js +43 -43
- package/lib/dependencies/ModuleDependency.js +20 -20
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +22 -22
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +22 -22
- package/lib/dependencies/ModuleHotAcceptDependency.js +18 -18
- package/lib/dependencies/ModuleHotDeclineDependency.js +18 -18
- package/lib/dependencies/MultiEntryDependency.js +16 -16
- package/lib/dependencies/NullDependency.js +17 -17
- package/lib/dependencies/NullDependencyTemplate.js +8 -8
- package/lib/dependencies/PrefetchDependency.js +14 -14
- package/lib/dependencies/RequireContextDependency.js +17 -17
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +33 -33
- package/lib/dependencies/RequireContextPlugin.js +64 -64
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +20 -20
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +66 -66
- package/lib/dependencies/RequireEnsureDependency.js +29 -29
- package/lib/dependencies/RequireEnsureItemDependency.js +16 -16
- package/lib/dependencies/RequireEnsurePlugin.js +38 -38
- package/lib/dependencies/RequireHeaderDependency.js +25 -25
- package/lib/dependencies/RequireIncludeDependency.js +25 -25
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +18 -18
- package/lib/dependencies/RequireIncludePlugin.js +31 -31
- package/lib/dependencies/RequireResolveContextDependency.js +18 -18
- package/lib/dependencies/RequireResolveDependency.js +17 -17
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +69 -69
- package/lib/dependencies/RequireResolveHeaderDependency.js +25 -25
- package/lib/dependencies/SingleEntryDependency.js +14 -14
- package/lib/dependencies/TemplateArgumentDependency.js +26 -26
- package/lib/dependencies/WebpackMissingModule.js +23 -23
- package/lib/dependencies/getFunctionExpression.js +43 -43
- package/lib/node/NodeChunkTemplatePlugin.js +22 -22
- package/lib/node/NodeEnvironmentPlugin.js +25 -25
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +24 -24
- package/lib/node/NodeMainTemplate.runtime.js +20 -20
- package/lib/node/NodeMainTemplateAsync.runtime.js +34 -34
- package/lib/node/NodeMainTemplatePlugin.js +164 -164
- package/lib/node/NodeOutputFileSystem.js +17 -17
- package/lib/node/NodeSourcePlugin.js +85 -75
- package/lib/node/NodeTargetPlugin.js +12 -12
- package/lib/node/NodeTemplatePlugin.js +21 -21
- package/lib/node/NodeWatchFileSystem.js +65 -65
- package/lib/node/OldNodeWatchFileSystem.js +265 -265
- package/lib/optimize/AggressiveMergingPlugin.js +115 -115
- package/lib/optimize/CommonsChunkPlugin.js +178 -178
- package/lib/optimize/DedupePlugin.js +227 -227
- package/lib/optimize/FlagIncludedChunksPlugin.js +24 -24
- package/lib/optimize/LimitChunkCountPlugin.js +55 -55
- package/lib/optimize/MergeDuplicateChunksPlugin.js +30 -30
- package/lib/optimize/MinChunkSizePlugin.js +61 -61
- package/lib/optimize/OccurenceOrderPlugin.js +5 -5
- package/lib/optimize/OccurrenceOrderPlugin.js +91 -91
- package/lib/optimize/RemoveEmptyChunksPlugin.js +19 -19
- package/lib/optimize/RemoveParentModulesPlugin.js +50 -50
- package/lib/optimize/UglifyJsPlugin.js +146 -146
- package/lib/removeAndDo.js +13 -13
- package/lib/web/WebEnvironmentPlugin.js +16 -16
- package/lib/webpack.js +113 -113
- package/lib/webpack.web.js +27 -27
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +26 -26
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +78 -78
- package/lib/webworker/WebWorkerTemplatePlugin.js +15 -15
- package/package.json +4 -4
@@ -1,223 +1,223 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
var Template = require("./Template");
|
6
|
-
var BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
7
|
-
var ModuleHotAcceptDependency = require("./dependencies/ModuleHotAcceptDependency");
|
8
|
-
var ModuleHotDeclineDependency = require("./dependencies/ModuleHotDeclineDependency");
|
9
|
-
var RawSource = require("webpack-core/lib/RawSource");
|
10
|
-
var ConstDependency = require("./dependencies/ConstDependency");
|
11
|
-
var NullFactory = require("./NullFactory");
|
12
|
-
|
13
|
-
function HotModuleReplacementPlugin() {}
|
14
|
-
module.exports = HotModuleReplacementPlugin;
|
15
|
-
|
16
|
-
HotModuleReplacementPlugin.prototype.apply = function(compiler) {
|
17
|
-
var hotUpdateChunkFilename = compiler.options.output.hotUpdateChunkFilename;
|
18
|
-
var hotUpdateMainFilename = compiler.options.output.hotUpdateMainFilename;
|
19
|
-
compiler.plugin("compilation", function(compilation, params) {
|
20
|
-
var hotUpdateChunkTemplate = compilation.hotUpdateChunkTemplate;
|
21
|
-
if(!hotUpdateChunkTemplate) return;
|
22
|
-
|
23
|
-
var normalModuleFactory = params.normalModuleFactory;
|
24
|
-
|
25
|
-
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
|
26
|
-
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
|
27
|
-
|
28
|
-
compilation.dependencyFactories.set(ModuleHotAcceptDependency, normalModuleFactory);
|
29
|
-
compilation.dependencyTemplates.set(ModuleHotAcceptDependency, new ModuleHotAcceptDependency.Template());
|
30
|
-
|
31
|
-
compilation.dependencyFactories.set(ModuleHotDeclineDependency, normalModuleFactory);
|
32
|
-
compilation.dependencyTemplates.set(ModuleHotDeclineDependency, new ModuleHotDeclineDependency.Template());
|
33
|
-
|
34
|
-
compilation.plugin("record", function(compilation, records) {
|
35
|
-
if(records.hash === this.hash) return;
|
36
|
-
records.hash = compilation.hash;
|
37
|
-
records.moduleHashs = {};
|
38
|
-
this.modules.forEach(function(module) {
|
39
|
-
var identifier = module.identifier();
|
40
|
-
var hash = require("crypto").createHash("md5");
|
41
|
-
module.updateHash(hash);
|
42
|
-
records.moduleHashs[identifier] = hash.digest("hex");
|
43
|
-
});
|
44
|
-
records.chunkHashs = {};
|
45
|
-
this.chunks.forEach(function(chunk) {
|
46
|
-
records.chunkHashs[chunk.id] = chunk.hash;
|
47
|
-
});
|
48
|
-
records.chunkModuleIds = {};
|
49
|
-
this.chunks.forEach(function(chunk) {
|
50
|
-
records.chunkModuleIds[chunk.id] = chunk.modules.map(function(m) {
|
51
|
-
return m.id;
|
52
|
-
});
|
53
|
-
});
|
54
|
-
});
|
55
|
-
compilation.plugin("after-hash", function() {
|
56
|
-
var records = this.records;
|
57
|
-
if(!records) return;
|
58
|
-
var preHash = records.preHash || "x";
|
59
|
-
var prepreHash = records.prepreHash || "x";
|
60
|
-
if(preHash === this.hash) {
|
61
|
-
this.modifyHash(prepreHash);
|
62
|
-
return;
|
63
|
-
}
|
64
|
-
records.prepreHash = records.hash || "x";
|
65
|
-
records.preHash = this.hash;
|
66
|
-
this.modifyHash(records.prepreHash);
|
67
|
-
});
|
68
|
-
compilation.plugin("additional-chunk-assets", function() {
|
69
|
-
var records = this.records;
|
70
|
-
if(records.hash === this.hash) return;
|
71
|
-
if(!records.moduleHashs || !records.chunkHashs || !records.chunkModuleIds) return;
|
72
|
-
this.modules.forEach(function(module) {
|
73
|
-
var identifier = module.identifier();
|
74
|
-
var hash = require("crypto").createHash("md5");
|
75
|
-
module.updateHash(hash);
|
76
|
-
hash = hash.digest("hex");
|
77
|
-
module.hotUpdate = records.moduleHashs[identifier] !== hash;
|
78
|
-
});
|
79
|
-
var hotUpdateMainContent = {
|
80
|
-
h: this.hash,
|
81
|
-
c: []
|
82
|
-
};
|
83
|
-
Object.keys(records.chunkHashs).forEach(function(chunkId) {
|
84
|
-
chunkId = +chunkId;
|
85
|
-
var currentChunk = this.chunks.filter(function(chunk) {
|
86
|
-
return chunk.id === chunkId;
|
87
|
-
})[0];
|
88
|
-
if(currentChunk) {
|
89
|
-
var newModules = currentChunk.modules.filter(function(module) {
|
90
|
-
return module.hotUpdate;
|
91
|
-
});
|
92
|
-
if(newModules.length > 0) {
|
93
|
-
var source = hotUpdateChunkTemplate.render(chunkId, newModules, this.hash, this.moduleTemplate, this.dependencyTemplates);
|
94
|
-
var filename = this.getPath(hotUpdateChunkFilename, {
|
95
|
-
hash: records.hash,
|
96
|
-
chunk: currentChunk
|
97
|
-
});
|
98
|
-
this.additionalChunkAssets.push(filename);
|
99
|
-
this.assets[filename] = source;
|
100
|
-
hotUpdateMainContent.c.push(chunkId);
|
101
|
-
currentChunk.files.push(filename);
|
102
|
-
this.applyPlugins("chunk-asset", currentChunk, filename);
|
103
|
-
}
|
104
|
-
}
|
105
|
-
}, this);
|
106
|
-
var source = new RawSource(JSON.stringify(hotUpdateMainContent));
|
107
|
-
var filename = this.getPath(hotUpdateMainFilename, {
|
108
|
-
hash: records.hash
|
109
|
-
});
|
110
|
-
this.assets[filename] = source;
|
111
|
-
});
|
112
|
-
|
113
|
-
compilation.mainTemplate.plugin("hash", function(hash) {
|
114
|
-
hash.update("HotMainTemplateDecorator");
|
115
|
-
});
|
116
|
-
|
117
|
-
compilation.mainTemplate.plugin("module-require", function(_, chunk, hash, varModuleId) {
|
118
|
-
return "hotCreateRequire(" + varModuleId + ")";
|
119
|
-
});
|
120
|
-
|
121
|
-
compilation.mainTemplate.plugin("require-extensions", function(source) {
|
122
|
-
var buf = [source];
|
123
|
-
buf.push("");
|
124
|
-
buf.push("// __webpack_hash__");
|
125
|
-
buf.push(this.requireFn + ".h = function() { return hotCurrentHash; };");
|
126
|
-
return this.asString(buf);
|
127
|
-
});
|
128
|
-
|
129
|
-
compilation.mainTemplate.plugin("bootstrap", function(source, chunk, hash) {
|
130
|
-
source = this.applyPluginsWaterfall("hot-bootstrap", source, chunk, hash);
|
131
|
-
return this.asString([
|
132
|
-
source,
|
133
|
-
"",
|
134
|
-
hotInitCode
|
135
|
-
.replace(/\$require\$/g, this.requireFn)
|
136
|
-
.replace(/\$hash\$/g, JSON.stringify(hash))
|
137
|
-
.replace(/\/\*foreachInstalledChunks\*\//g, chunk.chunks.length > 0 ? "for(var chunkId in installedChunks)" : "var chunkId = " + chunk.id + ";")
|
138
|
-
]);
|
139
|
-
});
|
140
|
-
|
141
|
-
compilation.mainTemplate.plugin("global-hash", function() {
|
142
|
-
return true;
|
143
|
-
});
|
144
|
-
|
145
|
-
compilation.mainTemplate.plugin("current-hash", function(_, length) {
|
146
|
-
if(isFinite(length))
|
147
|
-
return "hotCurrentHash.substr(0, " + length + ")";
|
148
|
-
else
|
149
|
-
return "hotCurrentHash";
|
150
|
-
});
|
151
|
-
|
152
|
-
compilation.mainTemplate.plugin("module-obj", function(source, chunk, hash, varModuleId) {
|
153
|
-
return this.asString([
|
154
|
-
source + ",",
|
155
|
-
"hot: hotCreateModule(" + varModuleId + "),",
|
156
|
-
"parents: hotCurrentParents,",
|
157
|
-
"children: []"
|
158
|
-
]);
|
159
|
-
});
|
160
|
-
|
161
|
-
});
|
162
|
-
compiler.parser.plugin("expression __webpack_hash__", function(expr) {
|
163
|
-
var dep = new ConstDependency("__webpack_require__.h()", expr.range);
|
164
|
-
dep.loc = expr.loc;
|
165
|
-
this.state.current.addDependency(dep);
|
166
|
-
return true;
|
167
|
-
});
|
168
|
-
compiler.parser.plugin("evaluate typeof __webpack_hash__", function(expr) {
|
169
|
-
return new BasicEvaluatedExpression().setString("string").setRange(expr.range);
|
170
|
-
});
|
171
|
-
compiler.parser.plugin("evaluate Identifier module.hot", function(expr) {
|
172
|
-
return new BasicEvaluatedExpression()
|
173
|
-
.setBoolean(!!this.state.compilation.hotUpdateChunkTemplate)
|
174
|
-
.setRange(expr.range);
|
175
|
-
});
|
176
|
-
compiler.parser.plugin("call module.hot.accept", function(expr) {
|
177
|
-
if(!this.state.compilation.hotUpdateChunkTemplate) return false;
|
178
|
-
if(expr.arguments.length > 1) {
|
179
|
-
var arg = this.evaluateExpression(expr.arguments[0]);
|
180
|
-
var params = [];
|
181
|
-
if(arg.isString()) {
|
182
|
-
params = [arg];
|
183
|
-
} else if(arg.isArray()) {
|
184
|
-
params = arg.items.filter(function(param) {
|
185
|
-
return param.isString();
|
186
|
-
});
|
187
|
-
}
|
188
|
-
params.forEach(function(param, idx) {
|
189
|
-
var dep = new ModuleHotAcceptDependency(param.string, param.range);
|
190
|
-
dep.optional = true;
|
191
|
-
dep.loc = Object.create(expr.loc);
|
192
|
-
dep.loc.index = idx;
|
193
|
-
this.state.module.addDependency(dep);
|
194
|
-
}.bind(this));
|
195
|
-
}
|
196
|
-
});
|
197
|
-
compiler.parser.plugin("call module.hot.decline", function(expr) {
|
198
|
-
if(!this.state.compilation.hotUpdateChunkTemplate) return false;
|
199
|
-
if(expr.arguments.length === 1) {
|
200
|
-
var arg = this.evaluateExpression(expr.arguments[0]);
|
201
|
-
var params = [];
|
202
|
-
if(arg.isString()) {
|
203
|
-
params = [arg];
|
204
|
-
} else if(arg.isArray()) {
|
205
|
-
params = arg.items.filter(function(param) {
|
206
|
-
return param.isString();
|
207
|
-
});
|
208
|
-
}
|
209
|
-
params.forEach(function(param, idx) {
|
210
|
-
var dep = new ModuleHotDeclineDependency(param.string, param.range);
|
211
|
-
dep.optional = true;
|
212
|
-
dep.loc = Object.create(expr.loc);
|
213
|
-
dep.loc.index = idx;
|
214
|
-
this.state.module.addDependency(dep);
|
215
|
-
}.bind(this));
|
216
|
-
}
|
217
|
-
});
|
218
|
-
compiler.parser.plugin("expression module.hot", function() {
|
219
|
-
return true;
|
220
|
-
});
|
221
|
-
};
|
222
|
-
|
223
|
-
var hotInitCode = Template.getFunctionContent(require("./HotModuleReplacement.runtime.js"));
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
var Template = require("./Template");
|
6
|
+
var BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
7
|
+
var ModuleHotAcceptDependency = require("./dependencies/ModuleHotAcceptDependency");
|
8
|
+
var ModuleHotDeclineDependency = require("./dependencies/ModuleHotDeclineDependency");
|
9
|
+
var RawSource = require("webpack-core/lib/RawSource");
|
10
|
+
var ConstDependency = require("./dependencies/ConstDependency");
|
11
|
+
var NullFactory = require("./NullFactory");
|
12
|
+
|
13
|
+
function HotModuleReplacementPlugin() {}
|
14
|
+
module.exports = HotModuleReplacementPlugin;
|
15
|
+
|
16
|
+
HotModuleReplacementPlugin.prototype.apply = function(compiler) {
|
17
|
+
var hotUpdateChunkFilename = compiler.options.output.hotUpdateChunkFilename;
|
18
|
+
var hotUpdateMainFilename = compiler.options.output.hotUpdateMainFilename;
|
19
|
+
compiler.plugin("compilation", function(compilation, params) {
|
20
|
+
var hotUpdateChunkTemplate = compilation.hotUpdateChunkTemplate;
|
21
|
+
if(!hotUpdateChunkTemplate) return;
|
22
|
+
|
23
|
+
var normalModuleFactory = params.normalModuleFactory;
|
24
|
+
|
25
|
+
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
|
26
|
+
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
|
27
|
+
|
28
|
+
compilation.dependencyFactories.set(ModuleHotAcceptDependency, normalModuleFactory);
|
29
|
+
compilation.dependencyTemplates.set(ModuleHotAcceptDependency, new ModuleHotAcceptDependency.Template());
|
30
|
+
|
31
|
+
compilation.dependencyFactories.set(ModuleHotDeclineDependency, normalModuleFactory);
|
32
|
+
compilation.dependencyTemplates.set(ModuleHotDeclineDependency, new ModuleHotDeclineDependency.Template());
|
33
|
+
|
34
|
+
compilation.plugin("record", function(compilation, records) {
|
35
|
+
if(records.hash === this.hash) return;
|
36
|
+
records.hash = compilation.hash;
|
37
|
+
records.moduleHashs = {};
|
38
|
+
this.modules.forEach(function(module) {
|
39
|
+
var identifier = module.identifier();
|
40
|
+
var hash = require("crypto").createHash("md5");
|
41
|
+
module.updateHash(hash);
|
42
|
+
records.moduleHashs[identifier] = hash.digest("hex");
|
43
|
+
});
|
44
|
+
records.chunkHashs = {};
|
45
|
+
this.chunks.forEach(function(chunk) {
|
46
|
+
records.chunkHashs[chunk.id] = chunk.hash;
|
47
|
+
});
|
48
|
+
records.chunkModuleIds = {};
|
49
|
+
this.chunks.forEach(function(chunk) {
|
50
|
+
records.chunkModuleIds[chunk.id] = chunk.modules.map(function(m) {
|
51
|
+
return m.id;
|
52
|
+
});
|
53
|
+
});
|
54
|
+
});
|
55
|
+
compilation.plugin("after-hash", function() {
|
56
|
+
var records = this.records;
|
57
|
+
if(!records) return;
|
58
|
+
var preHash = records.preHash || "x";
|
59
|
+
var prepreHash = records.prepreHash || "x";
|
60
|
+
if(preHash === this.hash) {
|
61
|
+
this.modifyHash(prepreHash);
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
records.prepreHash = records.hash || "x";
|
65
|
+
records.preHash = this.hash;
|
66
|
+
this.modifyHash(records.prepreHash);
|
67
|
+
});
|
68
|
+
compilation.plugin("additional-chunk-assets", function() {
|
69
|
+
var records = this.records;
|
70
|
+
if(records.hash === this.hash) return;
|
71
|
+
if(!records.moduleHashs || !records.chunkHashs || !records.chunkModuleIds) return;
|
72
|
+
this.modules.forEach(function(module) {
|
73
|
+
var identifier = module.identifier();
|
74
|
+
var hash = require("crypto").createHash("md5");
|
75
|
+
module.updateHash(hash);
|
76
|
+
hash = hash.digest("hex");
|
77
|
+
module.hotUpdate = records.moduleHashs[identifier] !== hash;
|
78
|
+
});
|
79
|
+
var hotUpdateMainContent = {
|
80
|
+
h: this.hash,
|
81
|
+
c: []
|
82
|
+
};
|
83
|
+
Object.keys(records.chunkHashs).forEach(function(chunkId) {
|
84
|
+
chunkId = +chunkId;
|
85
|
+
var currentChunk = this.chunks.filter(function(chunk) {
|
86
|
+
return chunk.id === chunkId;
|
87
|
+
})[0];
|
88
|
+
if(currentChunk) {
|
89
|
+
var newModules = currentChunk.modules.filter(function(module) {
|
90
|
+
return module.hotUpdate;
|
91
|
+
});
|
92
|
+
if(newModules.length > 0) {
|
93
|
+
var source = hotUpdateChunkTemplate.render(chunkId, newModules, this.hash, this.moduleTemplate, this.dependencyTemplates);
|
94
|
+
var filename = this.getPath(hotUpdateChunkFilename, {
|
95
|
+
hash: records.hash,
|
96
|
+
chunk: currentChunk
|
97
|
+
});
|
98
|
+
this.additionalChunkAssets.push(filename);
|
99
|
+
this.assets[filename] = source;
|
100
|
+
hotUpdateMainContent.c.push(chunkId);
|
101
|
+
currentChunk.files.push(filename);
|
102
|
+
this.applyPlugins("chunk-asset", currentChunk, filename);
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}, this);
|
106
|
+
var source = new RawSource(JSON.stringify(hotUpdateMainContent));
|
107
|
+
var filename = this.getPath(hotUpdateMainFilename, {
|
108
|
+
hash: records.hash
|
109
|
+
});
|
110
|
+
this.assets[filename] = source;
|
111
|
+
});
|
112
|
+
|
113
|
+
compilation.mainTemplate.plugin("hash", function(hash) {
|
114
|
+
hash.update("HotMainTemplateDecorator");
|
115
|
+
});
|
116
|
+
|
117
|
+
compilation.mainTemplate.plugin("module-require", function(_, chunk, hash, varModuleId) {
|
118
|
+
return "hotCreateRequire(" + varModuleId + ")";
|
119
|
+
});
|
120
|
+
|
121
|
+
compilation.mainTemplate.plugin("require-extensions", function(source) {
|
122
|
+
var buf = [source];
|
123
|
+
buf.push("");
|
124
|
+
buf.push("// __webpack_hash__");
|
125
|
+
buf.push(this.requireFn + ".h = function() { return hotCurrentHash; };");
|
126
|
+
return this.asString(buf);
|
127
|
+
});
|
128
|
+
|
129
|
+
compilation.mainTemplate.plugin("bootstrap", function(source, chunk, hash) {
|
130
|
+
source = this.applyPluginsWaterfall("hot-bootstrap", source, chunk, hash);
|
131
|
+
return this.asString([
|
132
|
+
source,
|
133
|
+
"",
|
134
|
+
hotInitCode
|
135
|
+
.replace(/\$require\$/g, this.requireFn)
|
136
|
+
.replace(/\$hash\$/g, JSON.stringify(hash))
|
137
|
+
.replace(/\/\*foreachInstalledChunks\*\//g, chunk.chunks.length > 0 ? "for(var chunkId in installedChunks)" : "var chunkId = " + chunk.id + ";")
|
138
|
+
]);
|
139
|
+
});
|
140
|
+
|
141
|
+
compilation.mainTemplate.plugin("global-hash", function() {
|
142
|
+
return true;
|
143
|
+
});
|
144
|
+
|
145
|
+
compilation.mainTemplate.plugin("current-hash", function(_, length) {
|
146
|
+
if(isFinite(length))
|
147
|
+
return "hotCurrentHash.substr(0, " + length + ")";
|
148
|
+
else
|
149
|
+
return "hotCurrentHash";
|
150
|
+
});
|
151
|
+
|
152
|
+
compilation.mainTemplate.plugin("module-obj", function(source, chunk, hash, varModuleId) {
|
153
|
+
return this.asString([
|
154
|
+
source + ",",
|
155
|
+
"hot: hotCreateModule(" + varModuleId + "),",
|
156
|
+
"parents: hotCurrentParents,",
|
157
|
+
"children: []"
|
158
|
+
]);
|
159
|
+
});
|
160
|
+
|
161
|
+
});
|
162
|
+
compiler.parser.plugin("expression __webpack_hash__", function(expr) {
|
163
|
+
var dep = new ConstDependency("__webpack_require__.h()", expr.range);
|
164
|
+
dep.loc = expr.loc;
|
165
|
+
this.state.current.addDependency(dep);
|
166
|
+
return true;
|
167
|
+
});
|
168
|
+
compiler.parser.plugin("evaluate typeof __webpack_hash__", function(expr) {
|
169
|
+
return new BasicEvaluatedExpression().setString("string").setRange(expr.range);
|
170
|
+
});
|
171
|
+
compiler.parser.plugin("evaluate Identifier module.hot", function(expr) {
|
172
|
+
return new BasicEvaluatedExpression()
|
173
|
+
.setBoolean(!!this.state.compilation.hotUpdateChunkTemplate)
|
174
|
+
.setRange(expr.range);
|
175
|
+
});
|
176
|
+
compiler.parser.plugin("call module.hot.accept", function(expr) {
|
177
|
+
if(!this.state.compilation.hotUpdateChunkTemplate) return false;
|
178
|
+
if(expr.arguments.length > 1) {
|
179
|
+
var arg = this.evaluateExpression(expr.arguments[0]);
|
180
|
+
var params = [];
|
181
|
+
if(arg.isString()) {
|
182
|
+
params = [arg];
|
183
|
+
} else if(arg.isArray()) {
|
184
|
+
params = arg.items.filter(function(param) {
|
185
|
+
return param.isString();
|
186
|
+
});
|
187
|
+
}
|
188
|
+
params.forEach(function(param, idx) {
|
189
|
+
var dep = new ModuleHotAcceptDependency(param.string, param.range);
|
190
|
+
dep.optional = true;
|
191
|
+
dep.loc = Object.create(expr.loc);
|
192
|
+
dep.loc.index = idx;
|
193
|
+
this.state.module.addDependency(dep);
|
194
|
+
}.bind(this));
|
195
|
+
}
|
196
|
+
});
|
197
|
+
compiler.parser.plugin("call module.hot.decline", function(expr) {
|
198
|
+
if(!this.state.compilation.hotUpdateChunkTemplate) return false;
|
199
|
+
if(expr.arguments.length === 1) {
|
200
|
+
var arg = this.evaluateExpression(expr.arguments[0]);
|
201
|
+
var params = [];
|
202
|
+
if(arg.isString()) {
|
203
|
+
params = [arg];
|
204
|
+
} else if(arg.isArray()) {
|
205
|
+
params = arg.items.filter(function(param) {
|
206
|
+
return param.isString();
|
207
|
+
});
|
208
|
+
}
|
209
|
+
params.forEach(function(param, idx) {
|
210
|
+
var dep = new ModuleHotDeclineDependency(param.string, param.range);
|
211
|
+
dep.optional = true;
|
212
|
+
dep.loc = Object.create(expr.loc);
|
213
|
+
dep.loc.index = idx;
|
214
|
+
this.state.module.addDependency(dep);
|
215
|
+
}.bind(this));
|
216
|
+
}
|
217
|
+
});
|
218
|
+
compiler.parser.plugin("expression module.hot", function() {
|
219
|
+
return true;
|
220
|
+
});
|
221
|
+
};
|
222
|
+
|
223
|
+
var hotInitCode = Template.getFunctionContent(require("./HotModuleReplacement.runtime.js"));
|
@@ -1,28 +1,28 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
var Template = require("./Template");
|
6
|
-
|
7
|
-
function HotUpdateChunkTemplate(outputOptions) {
|
8
|
-
Template.call(this, outputOptions);
|
9
|
-
}
|
10
|
-
|
11
|
-
module.exports = HotUpdateChunkTemplate;
|
12
|
-
|
13
|
-
HotUpdateChunkTemplate.prototype = Object.create(Template.prototype);
|
14
|
-
HotUpdateChunkTemplate.prototype.render = function(id, modules, hash, moduleTemplate, dependencyTemplates) {
|
15
|
-
var modulesSource = this.renderChunkModules({
|
16
|
-
id: id,
|
17
|
-
modules: modules
|
18
|
-
}, moduleTemplate, dependencyTemplates);
|
19
|
-
var core = this.applyPluginsWaterfall("modules", modulesSource, modules, moduleTemplate, dependencyTemplates);
|
20
|
-
var source = this.applyPluginsWaterfall("render", core, modules, hash, id, moduleTemplate, dependencyTemplates);
|
21
|
-
return source;
|
22
|
-
};
|
23
|
-
|
24
|
-
HotUpdateChunkTemplate.prototype.updateHash = function(hash) {
|
25
|
-
hash.update("HotUpdateChunkTemplate");
|
26
|
-
hash.update("1");
|
27
|
-
this.applyPlugins("hash", hash);
|
28
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
var Template = require("./Template");
|
6
|
+
|
7
|
+
function HotUpdateChunkTemplate(outputOptions) {
|
8
|
+
Template.call(this, outputOptions);
|
9
|
+
}
|
10
|
+
|
11
|
+
module.exports = HotUpdateChunkTemplate;
|
12
|
+
|
13
|
+
HotUpdateChunkTemplate.prototype = Object.create(Template.prototype);
|
14
|
+
HotUpdateChunkTemplate.prototype.render = function(id, modules, hash, moduleTemplate, dependencyTemplates) {
|
15
|
+
var modulesSource = this.renderChunkModules({
|
16
|
+
id: id,
|
17
|
+
modules: modules
|
18
|
+
}, moduleTemplate, dependencyTemplates);
|
19
|
+
var core = this.applyPluginsWaterfall("modules", modulesSource, modules, moduleTemplate, dependencyTemplates);
|
20
|
+
var source = this.applyPluginsWaterfall("render", core, modules, hash, id, moduleTemplate, dependencyTemplates);
|
21
|
+
return source;
|
22
|
+
};
|
23
|
+
|
24
|
+
HotUpdateChunkTemplate.prototype.updateHash = function(hash) {
|
25
|
+
hash.update("HotUpdateChunkTemplate");
|
26
|
+
hash.update("1");
|
27
|
+
this.applyPlugins("hash", hash);
|
28
|
+
};
|
package/lib/IgnorePlugin.js
CHANGED
@@ -1,32 +1,32 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
function IgnorePlugin(resourceRegExp, contextRegExp) {
|
6
|
-
this.resourceRegExp = resourceRegExp;
|
7
|
-
this.contextRegExp = contextRegExp;
|
8
|
-
}
|
9
|
-
module.exports = IgnorePlugin;
|
10
|
-
IgnorePlugin.prototype.apply = function(compiler) {
|
11
|
-
var resourceRegExp = this.resourceRegExp;
|
12
|
-
var contextRegExp = this.contextRegExp;
|
13
|
-
compiler.plugin("normal-module-factory", function(nmf) {
|
14
|
-
nmf.plugin("before-resolve", function(result, callback) {
|
15
|
-
if(!result) return callback();
|
16
|
-
if(resourceRegExp.test(result.request) &&
|
17
|
-
(!contextRegExp || contextRegExp.test(result.context))) {
|
18
|
-
return callback();
|
19
|
-
}
|
20
|
-
return callback(null, result);
|
21
|
-
});
|
22
|
-
});
|
23
|
-
compiler.plugin("context-module-factory", function(cmf) {
|
24
|
-
cmf.plugin("before-resolve", function(result, callback) {
|
25
|
-
if(!result) return callback();
|
26
|
-
if(resourceRegExp.test(result.request)) {
|
27
|
-
return callback();
|
28
|
-
}
|
29
|
-
return callback(null, result);
|
30
|
-
});
|
31
|
-
});
|
32
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
function IgnorePlugin(resourceRegExp, contextRegExp) {
|
6
|
+
this.resourceRegExp = resourceRegExp;
|
7
|
+
this.contextRegExp = contextRegExp;
|
8
|
+
}
|
9
|
+
module.exports = IgnorePlugin;
|
10
|
+
IgnorePlugin.prototype.apply = function(compiler) {
|
11
|
+
var resourceRegExp = this.resourceRegExp;
|
12
|
+
var contextRegExp = this.contextRegExp;
|
13
|
+
compiler.plugin("normal-module-factory", function(nmf) {
|
14
|
+
nmf.plugin("before-resolve", function(result, callback) {
|
15
|
+
if(!result) return callback();
|
16
|
+
if(resourceRegExp.test(result.request) &&
|
17
|
+
(!contextRegExp || contextRegExp.test(result.context))) {
|
18
|
+
return callback();
|
19
|
+
}
|
20
|
+
return callback(null, result);
|
21
|
+
});
|
22
|
+
});
|
23
|
+
compiler.plugin("context-module-factory", function(cmf) {
|
24
|
+
cmf.plugin("before-resolve", function(result, callback) {
|
25
|
+
if(!result) return callback();
|
26
|
+
if(resourceRegExp.test(result.request)) {
|
27
|
+
return callback();
|
28
|
+
}
|
29
|
+
return callback(null, result);
|
30
|
+
});
|
31
|
+
});
|
32
|
+
};
|
@@ -1,26 +1,26 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
var ConcatSource = require("webpack-core/lib/ConcatSource");
|
6
|
-
var Template = require("./Template");
|
7
|
-
|
8
|
-
function JsonpChunkTemplatePlugin() {}
|
9
|
-
module.exports = JsonpChunkTemplatePlugin;
|
10
|
-
|
11
|
-
JsonpChunkTemplatePlugin.prototype.apply = function(chunkTemplate) {
|
12
|
-
chunkTemplate.plugin("render", function(modules, chunk) {
|
13
|
-
var jsonpFunction = this.outputOptions.jsonpFunction || Template.toIdentifier("webpackJsonp" + (this.outputOptions.library || ""));
|
14
|
-
var source = new ConcatSource();
|
15
|
-
source.add(jsonpFunction + "(" + JSON.stringify(chunk.ids) + ",");
|
16
|
-
source.add(modules);
|
17
|
-
source.add(")");
|
18
|
-
return source;
|
19
|
-
});
|
20
|
-
chunkTemplate.plugin("hash", function(hash) {
|
21
|
-
hash.update("JsonpChunkTemplatePlugin");
|
22
|
-
hash.update("3");
|
23
|
-
hash.update(this.outputOptions.jsonpFunction + "");
|
24
|
-
hash.update(this.outputOptions.library + "");
|
25
|
-
});
|
26
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
var ConcatSource = require("webpack-core/lib/ConcatSource");
|
6
|
+
var Template = require("./Template");
|
7
|
+
|
8
|
+
function JsonpChunkTemplatePlugin() {}
|
9
|
+
module.exports = JsonpChunkTemplatePlugin;
|
10
|
+
|
11
|
+
JsonpChunkTemplatePlugin.prototype.apply = function(chunkTemplate) {
|
12
|
+
chunkTemplate.plugin("render", function(modules, chunk) {
|
13
|
+
var jsonpFunction = this.outputOptions.jsonpFunction || Template.toIdentifier("webpackJsonp" + (this.outputOptions.library || ""));
|
14
|
+
var source = new ConcatSource();
|
15
|
+
source.add(jsonpFunction + "(" + JSON.stringify(chunk.ids) + ",");
|
16
|
+
source.add(modules);
|
17
|
+
source.add(")");
|
18
|
+
return source;
|
19
|
+
});
|
20
|
+
chunkTemplate.plugin("hash", function(hash) {
|
21
|
+
hash.update("JsonpChunkTemplatePlugin");
|
22
|
+
hash.update("3");
|
23
|
+
hash.update(this.outputOptions.jsonpFunction + "");
|
24
|
+
hash.update(this.outputOptions.library + "");
|
25
|
+
});
|
26
|
+
};
|