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
package/lib/Template.js
CHANGED
@@ -1,119 +1,119 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
var Tapable = require("tapable");
|
6
|
-
var ConcatSource = require("webpack-core/lib/ConcatSource");
|
7
|
-
|
8
|
-
function Template(outputOptions) {
|
9
|
-
Tapable.call(this);
|
10
|
-
this.outputOptions = outputOptions || {};
|
11
|
-
}
|
12
|
-
module.exports = Template;
|
13
|
-
|
14
|
-
Template.getFunctionContent = function(fn) {
|
15
|
-
return fn.toString().replace(/^function\s?\(\)\s?\{\n?|\n?\}$/g, "").replace(/^\t/mg, "");
|
16
|
-
};
|
17
|
-
|
18
|
-
Template.toIdentifier = function(str) {
|
19
|
-
if(typeof str !== "string") return "";
|
20
|
-
return str.replace(/^[^a-zA-Z$_]/, "_").replace(/[^a-zA-Z0-9$_]/g, "_");
|
21
|
-
};
|
22
|
-
|
23
|
-
Template.prototype = Object.create(Tapable.prototype);
|
24
|
-
Template.prototype.constructor = Template;
|
25
|
-
|
26
|
-
Template.prototype.indent = function indent(str) {
|
27
|
-
if(Array.isArray(str)) {
|
28
|
-
return str.map(indent).join("\n");
|
29
|
-
} else {
|
30
|
-
str = str.trimRight();
|
31
|
-
if(!str) return "";
|
32
|
-
var ind = (str[0] === "\n" ? "" : "\t");
|
33
|
-
return ind + str.replace(/\n([^\n])/g, "\n\t$1");
|
34
|
-
}
|
35
|
-
};
|
36
|
-
|
37
|
-
Template.prototype.prefix = function(str, prefix) {
|
38
|
-
if(Array.isArray(str)) {
|
39
|
-
str = str.join("\n");
|
40
|
-
}
|
41
|
-
str = str.trim();
|
42
|
-
if(!str) return "";
|
43
|
-
var ind = (str[0] === "\n" ? "" : prefix);
|
44
|
-
return ind + str.replace(/\n([^\n])/g, "\n" + prefix + "$1");
|
45
|
-
};
|
46
|
-
|
47
|
-
Template.prototype.asString = function(str) {
|
48
|
-
if(Array.isArray(str)) {
|
49
|
-
return str.join("\n");
|
50
|
-
}
|
51
|
-
return str;
|
52
|
-
};
|
53
|
-
|
54
|
-
Template.prototype.getModulesArrayBounds = function(modules) {
|
55
|
-
if(modules.some(function(module) {
|
56
|
-
return typeof module.id !== "number";
|
57
|
-
}))
|
58
|
-
return false;
|
59
|
-
var maxId = -Infinity;
|
60
|
-
var minId = Infinity;
|
61
|
-
modules.forEach(function(module) {
|
62
|
-
if(maxId < module.id) maxId = module.id;
|
63
|
-
if(minId > module.id) minId = module.id;
|
64
|
-
});
|
65
|
-
if(minId < 16 + ("" + minId).length) {
|
66
|
-
// add minId x ',' instead of 'Array(minId).concat(...)'
|
67
|
-
minId = 0;
|
68
|
-
}
|
69
|
-
var objectOverhead = modules.map(function(module) {
|
70
|
-
var idLength = (module.id + "").length;
|
71
|
-
return idLength + 2;
|
72
|
-
}).reduce(function(a, b) {
|
73
|
-
return a + b;
|
74
|
-
}, -1);
|
75
|
-
var arrayOverhead = minId === 0 ? maxId : 16 + ("" + minId).length + maxId;
|
76
|
-
return arrayOverhead < objectOverhead ? [minId, maxId] : false;
|
77
|
-
};
|
78
|
-
|
79
|
-
Template.prototype.renderChunkModules = function(chunk, moduleTemplate, dependencyTemplates, prefix) {
|
80
|
-
if(!prefix) prefix = "";
|
81
|
-
var source = new ConcatSource();
|
82
|
-
if(chunk.modules.length === 0) {
|
83
|
-
source.add("[]");
|
84
|
-
return source;
|
85
|
-
}
|
86
|
-
var bounds = this.getModulesArrayBounds(chunk.modules);
|
87
|
-
if(bounds) {
|
88
|
-
// Render a spare array
|
89
|
-
var minId = bounds[0];
|
90
|
-
var maxId = bounds[1];
|
91
|
-
if(minId !== 0) source.add("Array(" + minId + ").concat(");
|
92
|
-
source.add("[\n");
|
93
|
-
var modules = {};
|
94
|
-
chunk.modules.forEach(function(module) {
|
95
|
-
modules[module.id] = module;
|
96
|
-
});
|
97
|
-
for(var idx = minId; idx <= maxId; idx++) {
|
98
|
-
var module = modules[idx];
|
99
|
-
if(idx !== minId) source.add(",\n");
|
100
|
-
source.add("/* " + idx + " */");
|
101
|
-
if(module) {
|
102
|
-
source.add("\n");
|
103
|
-
source.add(moduleTemplate.render(module, dependencyTemplates, chunk));
|
104
|
-
}
|
105
|
-
}
|
106
|
-
source.add("\n" + prefix + "]");
|
107
|
-
if(minId !== 0) source.add(")");
|
108
|
-
} else {
|
109
|
-
// Render an object
|
110
|
-
source.add("{\n");
|
111
|
-
chunk.modules.forEach(function(module, idx) {
|
112
|
-
if(idx !== 0) source.add(",\n");
|
113
|
-
source.add("\n/***/ " + JSON.stringify(module.id) + ":\n");
|
114
|
-
source.add(moduleTemplate.render(module, dependencyTemplates, chunk));
|
115
|
-
});
|
116
|
-
source.add("\n\n" + prefix + "}");
|
117
|
-
}
|
118
|
-
return source;
|
119
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
var Tapable = require("tapable");
|
6
|
+
var ConcatSource = require("webpack-core/lib/ConcatSource");
|
7
|
+
|
8
|
+
function Template(outputOptions) {
|
9
|
+
Tapable.call(this);
|
10
|
+
this.outputOptions = outputOptions || {};
|
11
|
+
}
|
12
|
+
module.exports = Template;
|
13
|
+
|
14
|
+
Template.getFunctionContent = function(fn) {
|
15
|
+
return fn.toString().replace(/^function\s?\(\)\s?\{\n?|\n?\}$/g, "").replace(/^\t/mg, "");
|
16
|
+
};
|
17
|
+
|
18
|
+
Template.toIdentifier = function(str) {
|
19
|
+
if(typeof str !== "string") return "";
|
20
|
+
return str.replace(/^[^a-zA-Z$_]/, "_").replace(/[^a-zA-Z0-9$_]/g, "_");
|
21
|
+
};
|
22
|
+
|
23
|
+
Template.prototype = Object.create(Tapable.prototype);
|
24
|
+
Template.prototype.constructor = Template;
|
25
|
+
|
26
|
+
Template.prototype.indent = function indent(str) {
|
27
|
+
if(Array.isArray(str)) {
|
28
|
+
return str.map(indent).join("\n");
|
29
|
+
} else {
|
30
|
+
str = str.trimRight();
|
31
|
+
if(!str) return "";
|
32
|
+
var ind = (str[0] === "\n" ? "" : "\t");
|
33
|
+
return ind + str.replace(/\n([^\n])/g, "\n\t$1");
|
34
|
+
}
|
35
|
+
};
|
36
|
+
|
37
|
+
Template.prototype.prefix = function(str, prefix) {
|
38
|
+
if(Array.isArray(str)) {
|
39
|
+
str = str.join("\n");
|
40
|
+
}
|
41
|
+
str = str.trim();
|
42
|
+
if(!str) return "";
|
43
|
+
var ind = (str[0] === "\n" ? "" : prefix);
|
44
|
+
return ind + str.replace(/\n([^\n])/g, "\n" + prefix + "$1");
|
45
|
+
};
|
46
|
+
|
47
|
+
Template.prototype.asString = function(str) {
|
48
|
+
if(Array.isArray(str)) {
|
49
|
+
return str.join("\n");
|
50
|
+
}
|
51
|
+
return str;
|
52
|
+
};
|
53
|
+
|
54
|
+
Template.prototype.getModulesArrayBounds = function(modules) {
|
55
|
+
if(modules.some(function(module) {
|
56
|
+
return typeof module.id !== "number";
|
57
|
+
}))
|
58
|
+
return false;
|
59
|
+
var maxId = -Infinity;
|
60
|
+
var minId = Infinity;
|
61
|
+
modules.forEach(function(module) {
|
62
|
+
if(maxId < module.id) maxId = module.id;
|
63
|
+
if(minId > module.id) minId = module.id;
|
64
|
+
});
|
65
|
+
if(minId < 16 + ("" + minId).length) {
|
66
|
+
// add minId x ',' instead of 'Array(minId).concat(...)'
|
67
|
+
minId = 0;
|
68
|
+
}
|
69
|
+
var objectOverhead = modules.map(function(module) {
|
70
|
+
var idLength = (module.id + "").length;
|
71
|
+
return idLength + 2;
|
72
|
+
}).reduce(function(a, b) {
|
73
|
+
return a + b;
|
74
|
+
}, -1);
|
75
|
+
var arrayOverhead = minId === 0 ? maxId : 16 + ("" + minId).length + maxId;
|
76
|
+
return arrayOverhead < objectOverhead ? [minId, maxId] : false;
|
77
|
+
};
|
78
|
+
|
79
|
+
Template.prototype.renderChunkModules = function(chunk, moduleTemplate, dependencyTemplates, prefix) {
|
80
|
+
if(!prefix) prefix = "";
|
81
|
+
var source = new ConcatSource();
|
82
|
+
if(chunk.modules.length === 0) {
|
83
|
+
source.add("[]");
|
84
|
+
return source;
|
85
|
+
}
|
86
|
+
var bounds = this.getModulesArrayBounds(chunk.modules);
|
87
|
+
if(bounds) {
|
88
|
+
// Render a spare array
|
89
|
+
var minId = bounds[0];
|
90
|
+
var maxId = bounds[1];
|
91
|
+
if(minId !== 0) source.add("Array(" + minId + ").concat(");
|
92
|
+
source.add("[\n");
|
93
|
+
var modules = {};
|
94
|
+
chunk.modules.forEach(function(module) {
|
95
|
+
modules[module.id] = module;
|
96
|
+
});
|
97
|
+
for(var idx = minId; idx <= maxId; idx++) {
|
98
|
+
var module = modules[idx];
|
99
|
+
if(idx !== minId) source.add(",\n");
|
100
|
+
source.add("/* " + idx + " */");
|
101
|
+
if(module) {
|
102
|
+
source.add("\n");
|
103
|
+
source.add(moduleTemplate.render(module, dependencyTemplates, chunk));
|
104
|
+
}
|
105
|
+
}
|
106
|
+
source.add("\n" + prefix + "]");
|
107
|
+
if(minId !== 0) source.add(")");
|
108
|
+
} else {
|
109
|
+
// Render an object
|
110
|
+
source.add("{\n");
|
111
|
+
chunk.modules.forEach(function(module, idx) {
|
112
|
+
if(idx !== 0) source.add(",\n");
|
113
|
+
source.add("\n/***/ " + JSON.stringify(module.id) + ":\n");
|
114
|
+
source.add(moduleTemplate.render(module, dependencyTemplates, chunk));
|
115
|
+
});
|
116
|
+
source.add("\n\n" + prefix + "}");
|
117
|
+
}
|
118
|
+
return source;
|
119
|
+
};
|
@@ -1,111 +1,111 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Jason Anderson @diurnalist
|
4
|
-
*/
|
5
|
-
|
6
|
-
var REGEXP_HASH = /\[hash(?::(\d+))?\]/gi,
|
7
|
-
REGEXP_CHUNKHASH = /\[chunkhash(?::(\d+))?\]/gi,
|
8
|
-
REGEXP_NAME = /\[name\]/gi,
|
9
|
-
REGEXP_ID = /\[id\]/gi,
|
10
|
-
REGEXP_FILE = /\[file\]/gi,
|
11
|
-
REGEXP_QUERY = /\[query\]/gi,
|
12
|
-
REGEXP_FILEBASE = /\[filebase\]/gi;
|
13
|
-
|
14
|
-
// Using global RegExp for .test is dangerous
|
15
|
-
// We use a normal RegExp instead of .test
|
16
|
-
var REGEXP_HASH_FOR_TEST = new RegExp(REGEXP_HASH.source, "i"),
|
17
|
-
REGEXP_CHUNKHASH_FOR_TEST = new RegExp(REGEXP_CHUNKHASH.source, "i"),
|
18
|
-
REGEXP_NAME_FOR_TEST = new RegExp(REGEXP_NAME.source, "i");
|
19
|
-
|
20
|
-
// Backwards compatibility; expose regexes on Template object
|
21
|
-
var Template = require("./Template");
|
22
|
-
Template.REGEXP_HASH = REGEXP_HASH;
|
23
|
-
Template.REGEXP_CHUNKHASH = REGEXP_CHUNKHASH;
|
24
|
-
Template.REGEXP_NAME = REGEXP_NAME;
|
25
|
-
Template.REGEXP_ID = REGEXP_ID;
|
26
|
-
Template.REGEXP_FILE = REGEXP_FILE;
|
27
|
-
Template.REGEXP_QUERY = REGEXP_QUERY;
|
28
|
-
Template.REGEXP_FILEBASE = REGEXP_FILEBASE;
|
29
|
-
|
30
|
-
function TemplatedPathPlugin() {}
|
31
|
-
|
32
|
-
module.exports = TemplatedPathPlugin;
|
33
|
-
|
34
|
-
function withHashLength(replacer, handlerFn) {
|
35
|
-
return function(_, hashLength) {
|
36
|
-
var length = hashLength && parseInt(hashLength, 10);
|
37
|
-
if(length && handlerFn) {
|
38
|
-
return handlerFn(length);
|
39
|
-
}
|
40
|
-
var hash = replacer.apply(this, arguments);
|
41
|
-
return length ? hash.slice(0, length) : hash;
|
42
|
-
};
|
43
|
-
}
|
44
|
-
|
45
|
-
function getReplacer(value, allowEmpty) {
|
46
|
-
return function(match) {
|
47
|
-
// last argument in replacer is the entire input string
|
48
|
-
var input = arguments[arguments.length - 1];
|
49
|
-
if(value == null) {
|
50
|
-
if(!allowEmpty) throw new Error("Path variable " + match + " not implemented in this context: " + input);
|
51
|
-
return "";
|
52
|
-
} else {
|
53
|
-
return "" + value;
|
54
|
-
}
|
55
|
-
};
|
56
|
-
}
|
57
|
-
|
58
|
-
function replacePathVariables(path, data) {
|
59
|
-
var chunk = data.chunk;
|
60
|
-
var chunkId = chunk && chunk.id;
|
61
|
-
var chunkName = chunk && (chunk.name || chunk.id);
|
62
|
-
var chunkHash = chunk && (chunk.renderedHash || chunk.hash);
|
63
|
-
var chunkHashWithLength = chunk && chunk.hashWithLength;
|
64
|
-
|
65
|
-
if(data.noChunkHash && REGEXP_CHUNKHASH_FOR_TEST.test(path)) {
|
66
|
-
throw new Error("Cannot use [chunkhash] for chunk in '" + path + "' (use [hash] instead)");
|
67
|
-
}
|
68
|
-
|
69
|
-
return path
|
70
|
-
.replace(REGEXP_HASH, withHashLength(getReplacer(data.hash), data.hashWithLength))
|
71
|
-
.replace(REGEXP_CHUNKHASH, withHashLength(getReplacer(chunkHash), chunkHashWithLength))
|
72
|
-
.replace(REGEXP_ID, getReplacer(chunkId))
|
73
|
-
.replace(REGEXP_NAME, getReplacer(chunkName))
|
74
|
-
.replace(REGEXP_FILE, getReplacer(data.filename))
|
75
|
-
.replace(REGEXP_FILEBASE, getReplacer(data.basename))
|
76
|
-
// query is optional, it's OK if it's in a path but there's nothing to replace it with
|
77
|
-
.replace(REGEXP_QUERY, getReplacer(data.query, true));
|
78
|
-
}
|
79
|
-
|
80
|
-
TemplatedPathPlugin.prototype.constructor = TemplatedPathPlugin;
|
81
|
-
TemplatedPathPlugin.prototype.apply = function(compiler) {
|
82
|
-
compiler.plugin("compilation", function(compilation) {
|
83
|
-
var mainTemplate = compilation.mainTemplate;
|
84
|
-
|
85
|
-
mainTemplate.plugin("asset-path", replacePathVariables);
|
86
|
-
|
87
|
-
mainTemplate.plugin("global-hash", function(chunk, paths) {
|
88
|
-
var outputOptions = this.outputOptions;
|
89
|
-
var publicPath = outputOptions.publicPath || "";
|
90
|
-
var filename = outputOptions.filename || "";
|
91
|
-
var chunkFilename = outputOptions.chunkFilename || outputOptions.filename;
|
92
|
-
if(REGEXP_HASH_FOR_TEST.test(publicPath) || REGEXP_CHUNKHASH_FOR_TEST.test(publicPath) || REGEXP_NAME_FOR_TEST.test(publicPath))
|
93
|
-
return true;
|
94
|
-
if(REGEXP_HASH_FOR_TEST.test(filename))
|
95
|
-
return true;
|
96
|
-
if(REGEXP_HASH_FOR_TEST.test(chunkFilename))
|
97
|
-
return true;
|
98
|
-
if(REGEXP_HASH_FOR_TEST.test(paths.join("|")))
|
99
|
-
return true;
|
100
|
-
});
|
101
|
-
|
102
|
-
mainTemplate.plugin("hash-for-chunk", function(hash, chunk) {
|
103
|
-
var outputOptions = this.outputOptions;
|
104
|
-
var chunkFilename = outputOptions.chunkFilename || outputOptions.filename;
|
105
|
-
if(REGEXP_CHUNKHASH_FOR_TEST.test(chunkFilename))
|
106
|
-
hash.update(JSON.stringify(chunk.getChunkMaps(true, true).hash));
|
107
|
-
if(REGEXP_NAME_FOR_TEST.test(chunkFilename))
|
108
|
-
hash.update(JSON.stringify(chunk.getChunkMaps(true, true).name));
|
109
|
-
});
|
110
|
-
});
|
111
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Jason Anderson @diurnalist
|
4
|
+
*/
|
5
|
+
|
6
|
+
var REGEXP_HASH = /\[hash(?::(\d+))?\]/gi,
|
7
|
+
REGEXP_CHUNKHASH = /\[chunkhash(?::(\d+))?\]/gi,
|
8
|
+
REGEXP_NAME = /\[name\]/gi,
|
9
|
+
REGEXP_ID = /\[id\]/gi,
|
10
|
+
REGEXP_FILE = /\[file\]/gi,
|
11
|
+
REGEXP_QUERY = /\[query\]/gi,
|
12
|
+
REGEXP_FILEBASE = /\[filebase\]/gi;
|
13
|
+
|
14
|
+
// Using global RegExp for .test is dangerous
|
15
|
+
// We use a normal RegExp instead of .test
|
16
|
+
var REGEXP_HASH_FOR_TEST = new RegExp(REGEXP_HASH.source, "i"),
|
17
|
+
REGEXP_CHUNKHASH_FOR_TEST = new RegExp(REGEXP_CHUNKHASH.source, "i"),
|
18
|
+
REGEXP_NAME_FOR_TEST = new RegExp(REGEXP_NAME.source, "i");
|
19
|
+
|
20
|
+
// Backwards compatibility; expose regexes on Template object
|
21
|
+
var Template = require("./Template");
|
22
|
+
Template.REGEXP_HASH = REGEXP_HASH;
|
23
|
+
Template.REGEXP_CHUNKHASH = REGEXP_CHUNKHASH;
|
24
|
+
Template.REGEXP_NAME = REGEXP_NAME;
|
25
|
+
Template.REGEXP_ID = REGEXP_ID;
|
26
|
+
Template.REGEXP_FILE = REGEXP_FILE;
|
27
|
+
Template.REGEXP_QUERY = REGEXP_QUERY;
|
28
|
+
Template.REGEXP_FILEBASE = REGEXP_FILEBASE;
|
29
|
+
|
30
|
+
function TemplatedPathPlugin() {}
|
31
|
+
|
32
|
+
module.exports = TemplatedPathPlugin;
|
33
|
+
|
34
|
+
function withHashLength(replacer, handlerFn) {
|
35
|
+
return function(_, hashLength) {
|
36
|
+
var length = hashLength && parseInt(hashLength, 10);
|
37
|
+
if(length && handlerFn) {
|
38
|
+
return handlerFn(length);
|
39
|
+
}
|
40
|
+
var hash = replacer.apply(this, arguments);
|
41
|
+
return length ? hash.slice(0, length) : hash;
|
42
|
+
};
|
43
|
+
}
|
44
|
+
|
45
|
+
function getReplacer(value, allowEmpty) {
|
46
|
+
return function(match) {
|
47
|
+
// last argument in replacer is the entire input string
|
48
|
+
var input = arguments[arguments.length - 1];
|
49
|
+
if(value == null) {
|
50
|
+
if(!allowEmpty) throw new Error("Path variable " + match + " not implemented in this context: " + input);
|
51
|
+
return "";
|
52
|
+
} else {
|
53
|
+
return "" + value;
|
54
|
+
}
|
55
|
+
};
|
56
|
+
}
|
57
|
+
|
58
|
+
function replacePathVariables(path, data) {
|
59
|
+
var chunk = data.chunk;
|
60
|
+
var chunkId = chunk && chunk.id;
|
61
|
+
var chunkName = chunk && (chunk.name || chunk.id);
|
62
|
+
var chunkHash = chunk && (chunk.renderedHash || chunk.hash);
|
63
|
+
var chunkHashWithLength = chunk && chunk.hashWithLength;
|
64
|
+
|
65
|
+
if(data.noChunkHash && REGEXP_CHUNKHASH_FOR_TEST.test(path)) {
|
66
|
+
throw new Error("Cannot use [chunkhash] for chunk in '" + path + "' (use [hash] instead)");
|
67
|
+
}
|
68
|
+
|
69
|
+
return path
|
70
|
+
.replace(REGEXP_HASH, withHashLength(getReplacer(data.hash), data.hashWithLength))
|
71
|
+
.replace(REGEXP_CHUNKHASH, withHashLength(getReplacer(chunkHash), chunkHashWithLength))
|
72
|
+
.replace(REGEXP_ID, getReplacer(chunkId))
|
73
|
+
.replace(REGEXP_NAME, getReplacer(chunkName))
|
74
|
+
.replace(REGEXP_FILE, getReplacer(data.filename))
|
75
|
+
.replace(REGEXP_FILEBASE, getReplacer(data.basename))
|
76
|
+
// query is optional, it's OK if it's in a path but there's nothing to replace it with
|
77
|
+
.replace(REGEXP_QUERY, getReplacer(data.query, true));
|
78
|
+
}
|
79
|
+
|
80
|
+
TemplatedPathPlugin.prototype.constructor = TemplatedPathPlugin;
|
81
|
+
TemplatedPathPlugin.prototype.apply = function(compiler) {
|
82
|
+
compiler.plugin("compilation", function(compilation) {
|
83
|
+
var mainTemplate = compilation.mainTemplate;
|
84
|
+
|
85
|
+
mainTemplate.plugin("asset-path", replacePathVariables);
|
86
|
+
|
87
|
+
mainTemplate.plugin("global-hash", function(chunk, paths) {
|
88
|
+
var outputOptions = this.outputOptions;
|
89
|
+
var publicPath = outputOptions.publicPath || "";
|
90
|
+
var filename = outputOptions.filename || "";
|
91
|
+
var chunkFilename = outputOptions.chunkFilename || outputOptions.filename;
|
92
|
+
if(REGEXP_HASH_FOR_TEST.test(publicPath) || REGEXP_CHUNKHASH_FOR_TEST.test(publicPath) || REGEXP_NAME_FOR_TEST.test(publicPath))
|
93
|
+
return true;
|
94
|
+
if(REGEXP_HASH_FOR_TEST.test(filename))
|
95
|
+
return true;
|
96
|
+
if(REGEXP_HASH_FOR_TEST.test(chunkFilename))
|
97
|
+
return true;
|
98
|
+
if(REGEXP_HASH_FOR_TEST.test(paths.join("|")))
|
99
|
+
return true;
|
100
|
+
});
|
101
|
+
|
102
|
+
mainTemplate.plugin("hash-for-chunk", function(hash, chunk) {
|
103
|
+
var outputOptions = this.outputOptions;
|
104
|
+
var chunkFilename = outputOptions.chunkFilename || outputOptions.filename;
|
105
|
+
if(REGEXP_CHUNKHASH_FOR_TEST.test(chunkFilename))
|
106
|
+
hash.update(JSON.stringify(chunk.getChunkMaps(true, true).hash));
|
107
|
+
if(REGEXP_NAME_FOR_TEST.test(chunkFilename))
|
108
|
+
hash.update(JSON.stringify(chunk.getChunkMaps(true, true).name));
|
109
|
+
});
|
110
|
+
});
|
111
|
+
};
|