webpack 3.8.0 → 3.8.1
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 +20 -20
- package/README.md +716 -716
- package/buildin/.eslintrc +7 -7
- package/buildin/amd-define.js +3 -3
- package/buildin/amd-options.js +2 -2
- package/buildin/global.js +21 -21
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/buildin/system.js +7 -7
- package/hot/.eslintrc +9 -9
- package/hot/dev-server.js +53 -53
- package/hot/emitter.js +2 -2
- package/hot/log-apply-result.js +38 -38
- package/hot/log.js +44 -44
- package/hot/only-dev-server.js +71 -71
- package/hot/poll.js +34 -34
- package/hot/signal.js +51 -51
- package/lib/APIPlugin.js +45 -45
- package/lib/AsyncDependenciesBlock.js +43 -43
- package/lib/AutomaticPrefetchPlugin.js +36 -36
- package/lib/BasicEvaluatedExpression.js +203 -203
- package/lib/CaseSensitiveModulesWarning.js +49 -49
- package/lib/ChunkRenderError.js +24 -24
- package/lib/ChunkTemplate.js +36 -36
- package/lib/CompatibilityPlugin.js +57 -57
- package/lib/Compiler.js +523 -523
- package/lib/ConstPlugin.js +60 -60
- package/lib/ContextModule.js +431 -431
- package/lib/ContextReplacementPlugin.js +111 -111
- package/lib/DefinePlugin.js +123 -123
- package/lib/DelegatedModule.js +98 -98
- package/lib/DelegatedModuleFactoryPlugin.js +59 -59
- package/lib/DelegatedPlugin.js +30 -30
- package/lib/DependenciesBlockVariable.js +51 -51
- package/lib/DllEntryPlugin.js +37 -37
- package/lib/DllModule.js +58 -58
- package/lib/DllModuleFactory.js +20 -20
- package/lib/DllPlugin.js +38 -38
- package/lib/DllReferencePlugin.js +62 -62
- package/lib/DynamicEntryPlugin.js +59 -59
- package/lib/EntryModuleNotFoundError.js +22 -22
- package/lib/EntryOptionPlugin.js +31 -31
- package/lib/EnvironmentPlugin.js +50 -50
- package/lib/ErrorHelpers.js +31 -31
- package/lib/EvalDevToolModulePlugin.js +22 -22
- package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
- package/lib/EvalSourceMapDevToolPlugin.js +32 -32
- package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
- package/lib/ExtendedAPIPlugin.js +47 -47
- package/lib/ExternalModuleFactoryPlugin.js +91 -91
- package/lib/ExternalsPlugin.js +21 -21
- package/lib/FlagDependencyExportsPlugin.js +101 -101
- package/lib/FunctionModulePlugin.js +24 -24
- package/lib/HashedModuleIdsPlugin.js +42 -42
- package/lib/HotUpdateChunkTemplate.js +31 -31
- package/lib/IgnorePlugin.js +69 -69
- package/lib/JsonpExportMainTemplatePlugin.js +37 -37
- package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/JsonpTemplatePlugin.js +21 -21
- package/lib/LibManifestPlugin.js +63 -63
- package/lib/LibraryTemplatePlugin.js +92 -92
- package/lib/LoaderOptionsPlugin.js +36 -36
- package/lib/LoaderTargetPlugin.js +19 -19
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleDependencyError.js +22 -22
- package/lib/ModuleDependencyWarning.js +22 -22
- package/lib/ModuleError.js +24 -24
- package/lib/ModuleFilenameHelpers.js +162 -162
- package/lib/ModuleNotFoundError.js +26 -26
- package/lib/ModuleReason.js +50 -50
- package/lib/ModuleTemplate.js +23 -23
- package/lib/ModuleWarning.js +24 -24
- package/lib/MovedToPluginWarningPlugin.js +21 -21
- package/lib/MultiCompiler.js +164 -164
- package/lib/MultiEntryPlugin.js +39 -39
- package/lib/MultiModuleFactory.js +19 -19
- package/lib/MultiStats.js +79 -79
- package/lib/MultiWatching.js +32 -32
- package/lib/NamedChunksPlugin.js +30 -30
- package/lib/NamedModulesPlugin.js +27 -27
- package/lib/NewWatchingPlugin.js +15 -15
- package/lib/NoEmitOnErrorsPlugin.js +22 -22
- package/lib/NoErrorsPlugin.js +29 -29
- package/lib/NodeStuffPlugin.js +97 -97
- package/lib/NormalModuleReplacementPlugin.js +45 -45
- package/lib/NullFactory.js +12 -12
- package/lib/OptionsApply.js +10 -10
- package/lib/ParserHelpers.js +85 -85
- package/lib/PrefetchPlugin.js +31 -31
- package/lib/ProgressPlugin.js +192 -192
- package/lib/ProvidePlugin.js +55 -55
- package/lib/RawModule.js +54 -54
- package/lib/RequestShortener.js +63 -63
- package/lib/RequireJsStuffPlugin.js +31 -31
- package/lib/RuleSet.js +444 -444
- package/lib/SetVarMainTemplatePlugin.js +41 -41
- package/lib/SingleEntryPlugin.js +35 -35
- package/lib/SizeFormatHelpers.js +18 -18
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
- package/lib/UnsupportedFeatureWarning.js +21 -21
- package/lib/UseStrictPlugin.js +34 -34
- package/lib/WarnCaseSensitiveModulesPlugin.js +31 -31
- package/lib/WatchIgnorePlugin.js +49 -49
- package/lib/WebpackError.js +11 -11
- package/lib/WebpackOptionsDefaulter.js +129 -129
- package/lib/WebpackOptionsValidationError.js +196 -196
- package/lib/compareLocations.js +36 -36
- package/lib/dependencies/AMDDefineDependency.js +142 -142
- package/lib/dependencies/AMDPlugin.js +119 -119
- package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
- package/lib/dependencies/AMDRequireDependency.js +67 -67
- package/lib/dependencies/AMDRequireItemDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
- package/lib/dependencies/ConstDependency.js +32 -32
- package/lib/dependencies/ContextDependencyHelpers.js +71 -71
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/CriticalDependencyWarning.js +20 -20
- package/lib/dependencies/DelegatedExportsDependency.js +33 -33
- package/lib/dependencies/DelegatedSourceDependency.js +18 -18
- package/lib/dependencies/DllEntryDependency.js +20 -20
- package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
- package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
- package/lib/dependencies/ImportDependenciesBlock.js +17 -17
- package/lib/dependencies/ImportEagerContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
- package/lib/dependencies/ImportParserPlugin.js +89 -89
- package/lib/dependencies/ImportPlugin.js +60 -60
- package/lib/dependencies/ImportWeakContextDependency.js +22 -22
- package/lib/dependencies/LoaderDependency.js +18 -18
- package/lib/dependencies/LoaderPlugin.js +60 -60
- package/lib/dependencies/LocalModule.js +23 -23
- package/lib/dependencies/LocalModuleDependency.js +24 -24
- package/lib/dependencies/LocalModulesHelpers.js +46 -46
- package/lib/dependencies/ModuleDependency.js +23 -23
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
- package/lib/dependencies/MultiEntryDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +24 -24
- package/lib/dependencies/PrefetchDependency.js +18 -18
- package/lib/dependencies/RequireContextDependency.js +26 -26
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
- package/lib/dependencies/RequireContextPlugin.js +96 -96
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
- package/lib/dependencies/RequireEnsureDependency.js +38 -38
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
- package/lib/dependencies/RequireEnsurePlugin.js +40 -40
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
- package/lib/dependencies/RequireIncludePlugin.js +33 -33
- package/lib/dependencies/RequireResolveDependency.js +22 -22
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SingleEntryDependency.js +18 -18
- package/lib/dependencies/SystemPlugin.js +44 -44
- package/lib/dependencies/UnsupportedDependency.js +23 -23
- package/lib/dependencies/WebpackMissingModule.js +18 -18
- package/lib/dependencies/getFunctionExpression.js +44 -44
- package/lib/formatLocation.js +54 -54
- package/lib/node/NodeChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeEnvironmentPlugin.js +25 -25
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeMainTemplate.runtime.js +24 -24
- package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
- package/lib/node/NodeOutputFileSystem.js +22 -22
- package/lib/node/NodeSourcePlugin.js +88 -88
- package/lib/node/NodeTargetPlugin.js +15 -15
- package/lib/node/NodeTemplatePlugin.js +27 -27
- package/lib/node/NodeWatchFileSystem.js +72 -72
- package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
- package/lib/optimize/DedupePlugin.js +15 -15
- package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
- package/lib/optimize/LimitChunkCountPlugin.js +59 -59
- package/lib/optimize/MinChunkSizePlugin.js +65 -65
- package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
- package/lib/optimize/UglifyJsPlugin.js +9 -9
- package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
- package/lib/performance/NoAsyncChunksWarning.js +20 -20
- package/lib/performance/SizeLimitsPlugin.js +102 -102
- package/lib/prepareOptions.js +29 -29
- package/lib/removeAndDo.js +15 -15
- package/lib/util/Semaphore.js +32 -32
- package/lib/util/identifier.js +38 -38
- package/lib/validateSchema.js +66 -66
- package/lib/web/WebEnvironmentPlugin.js +18 -18
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
- package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
- package/package.json +1 -1
- package/schemas/ajv.absolutePath.js +29 -29
- package/schemas/webpackOptionsSchema.json +16 -0
package/lib/ModuleError.js
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const WebpackError = require("./WebpackError");
|
8
|
-
const cleanUp = require("./ErrorHelpers").cleanUp;
|
9
|
-
|
10
|
-
class ModuleError extends WebpackError {
|
11
|
-
constructor(module, err) {
|
12
|
-
super();
|
13
|
-
|
14
|
-
this.name = "ModuleError";
|
15
|
-
this.module = module;
|
16
|
-
this.message = err && typeof err === "object" && err.message ? err.message : err;
|
17
|
-
this.error = err;
|
18
|
-
this.details = err && typeof err === "object" && err.stack ? cleanUp(err.stack, this.message) : undefined;
|
19
|
-
|
20
|
-
Error.captureStackTrace(this, this.constructor);
|
21
|
-
}
|
22
|
-
}
|
23
|
-
|
24
|
-
module.exports = ModuleError;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const WebpackError = require("./WebpackError");
|
8
|
+
const cleanUp = require("./ErrorHelpers").cleanUp;
|
9
|
+
|
10
|
+
class ModuleError extends WebpackError {
|
11
|
+
constructor(module, err) {
|
12
|
+
super();
|
13
|
+
|
14
|
+
this.name = "ModuleError";
|
15
|
+
this.module = module;
|
16
|
+
this.message = err && typeof err === "object" && err.message ? err.message : err;
|
17
|
+
this.error = err;
|
18
|
+
this.details = err && typeof err === "object" && err.stack ? cleanUp(err.stack, this.message) : undefined;
|
19
|
+
|
20
|
+
Error.captureStackTrace(this, this.constructor);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
module.exports = ModuleError;
|
@@ -1,162 +1,162 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const ModuleFilenameHelpers = exports;
|
8
|
-
|
9
|
-
ModuleFilenameHelpers.ALL_LOADERS_RESOURCE = "[all-loaders][resource]";
|
10
|
-
ModuleFilenameHelpers.REGEXP_ALL_LOADERS_RESOURCE = /\[all-?loaders\]\[resource\]/gi;
|
11
|
-
ModuleFilenameHelpers.LOADERS_RESOURCE = "[loaders][resource]";
|
12
|
-
ModuleFilenameHelpers.REGEXP_LOADERS_RESOURCE = /\[loaders\]\[resource\]/gi;
|
13
|
-
ModuleFilenameHelpers.RESOURCE = "[resource]";
|
14
|
-
ModuleFilenameHelpers.REGEXP_RESOURCE = /\[resource\]/gi;
|
15
|
-
ModuleFilenameHelpers.ABSOLUTE_RESOURCE_PATH = "[absolute-resource-path]";
|
16
|
-
ModuleFilenameHelpers.REGEXP_ABSOLUTE_RESOURCE_PATH = /\[abs(olute)?-?resource-?path\]/gi;
|
17
|
-
ModuleFilenameHelpers.RESOURCE_PATH = "[resource-path]";
|
18
|
-
ModuleFilenameHelpers.REGEXP_RESOURCE_PATH = /\[resource-?path\]/gi;
|
19
|
-
ModuleFilenameHelpers.ALL_LOADERS = "[all-loaders]";
|
20
|
-
ModuleFilenameHelpers.REGEXP_ALL_LOADERS = /\[all-?loaders\]/gi;
|
21
|
-
ModuleFilenameHelpers.LOADERS = "[loaders]";
|
22
|
-
ModuleFilenameHelpers.REGEXP_LOADERS = /\[loaders\]/gi;
|
23
|
-
ModuleFilenameHelpers.QUERY = "[query]";
|
24
|
-
ModuleFilenameHelpers.REGEXP_QUERY = /\[query\]/gi;
|
25
|
-
ModuleFilenameHelpers.ID = "[id]";
|
26
|
-
ModuleFilenameHelpers.REGEXP_ID = /\[id\]/gi;
|
27
|
-
ModuleFilenameHelpers.HASH = "[hash]";
|
28
|
-
ModuleFilenameHelpers.REGEXP_HASH = /\[hash\]/gi;
|
29
|
-
|
30
|
-
function getAfter(str, token) {
|
31
|
-
const idx = str.indexOf(token);
|
32
|
-
return idx < 0 ? "" : str.substr(idx);
|
33
|
-
}
|
34
|
-
|
35
|
-
function getBefore(str, token) {
|
36
|
-
const idx = str.lastIndexOf(token);
|
37
|
-
return idx < 0 ? "" : str.substr(0, idx);
|
38
|
-
}
|
39
|
-
|
40
|
-
function getHash(str) {
|
41
|
-
const hash = require("crypto").createHash("md5");
|
42
|
-
hash.update(str);
|
43
|
-
return hash.digest("hex").substr(0, 4);
|
44
|
-
}
|
45
|
-
|
46
|
-
function asRegExp(test) {
|
47
|
-
if(typeof test === "string") test = new RegExp("^" + test.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"));
|
48
|
-
return test;
|
49
|
-
}
|
50
|
-
|
51
|
-
ModuleFilenameHelpers.createFilename = function createFilename(module, moduleFilenameTemplate, requestShortener) {
|
52
|
-
let absoluteResourcePath;
|
53
|
-
let hash;
|
54
|
-
let identifier;
|
55
|
-
let moduleId;
|
56
|
-
let shortIdentifier;
|
57
|
-
if(module === undefined) module = "";
|
58
|
-
if(typeof module === "string") {
|
59
|
-
shortIdentifier = requestShortener.shorten(module);
|
60
|
-
identifier = shortIdentifier;
|
61
|
-
moduleId = "";
|
62
|
-
absoluteResourcePath = module.split("!").pop();
|
63
|
-
hash = getHash(identifier);
|
64
|
-
} else {
|
65
|
-
shortIdentifier = module.readableIdentifier(requestShortener);
|
66
|
-
identifier = requestShortener.shorten(module.identifier());
|
67
|
-
moduleId = module.id;
|
68
|
-
absoluteResourcePath = module.identifier().split("!").pop();
|
69
|
-
hash = getHash(identifier);
|
70
|
-
}
|
71
|
-
const resource = shortIdentifier.split("!").pop();
|
72
|
-
const loaders = getBefore(shortIdentifier, "!");
|
73
|
-
const allLoaders = getBefore(identifier, "!");
|
74
|
-
const query = getAfter(resource, "?");
|
75
|
-
const resourcePath = resource.substr(0, resource.length - query.length);
|
76
|
-
if(typeof moduleFilenameTemplate === "function") {
|
77
|
-
return moduleFilenameTemplate({
|
78
|
-
identifier: identifier,
|
79
|
-
shortIdentifier: shortIdentifier,
|
80
|
-
resource: resource,
|
81
|
-
resourcePath: resourcePath,
|
82
|
-
absoluteResourcePath: absoluteResourcePath,
|
83
|
-
allLoaders: allLoaders,
|
84
|
-
query: query,
|
85
|
-
moduleId: moduleId,
|
86
|
-
hash: hash
|
87
|
-
});
|
88
|
-
}
|
89
|
-
return moduleFilenameTemplate
|
90
|
-
.replace(ModuleFilenameHelpers.REGEXP_ALL_LOADERS_RESOURCE, identifier)
|
91
|
-
.replace(ModuleFilenameHelpers.REGEXP_LOADERS_RESOURCE, shortIdentifier)
|
92
|
-
.replace(ModuleFilenameHelpers.REGEXP_RESOURCE, resource)
|
93
|
-
.replace(ModuleFilenameHelpers.REGEXP_RESOURCE_PATH, resourcePath)
|
94
|
-
.replace(ModuleFilenameHelpers.REGEXP_ABSOLUTE_RESOURCE_PATH, absoluteResourcePath)
|
95
|
-
.replace(ModuleFilenameHelpers.REGEXP_ALL_LOADERS, allLoaders)
|
96
|
-
.replace(ModuleFilenameHelpers.REGEXP_LOADERS, loaders)
|
97
|
-
.replace(ModuleFilenameHelpers.REGEXP_QUERY, query)
|
98
|
-
.replace(ModuleFilenameHelpers.REGEXP_ID, moduleId)
|
99
|
-
.replace(ModuleFilenameHelpers.REGEXP_HASH, hash);
|
100
|
-
};
|
101
|
-
|
102
|
-
ModuleFilenameHelpers.createFooter = function createFooter(module, requestShortener) {
|
103
|
-
if(!module) module = "";
|
104
|
-
if(typeof module === "string") {
|
105
|
-
return [
|
106
|
-
"// WEBPACK FOOTER //",
|
107
|
-
`// ${requestShortener.shorten(module)}`
|
108
|
-
].join("\n");
|
109
|
-
} else {
|
110
|
-
return [
|
111
|
-
"//////////////////",
|
112
|
-
"// WEBPACK FOOTER",
|
113
|
-
`// ${module.readableIdentifier(requestShortener)}`,
|
114
|
-
`// module id = ${module.id}`,
|
115
|
-
`// module chunks = ${module.mapChunks(c => c.id).join(" ")}`
|
116
|
-
].join("\n");
|
117
|
-
}
|
118
|
-
};
|
119
|
-
|
120
|
-
ModuleFilenameHelpers.replaceDuplicates = function replaceDuplicates(array, fn, comparator) {
|
121
|
-
const countMap = Object.create(null);
|
122
|
-
const posMap = Object.create(null);
|
123
|
-
array.forEach((item, idx) => {
|
124
|
-
countMap[item] = (countMap[item] || []);
|
125
|
-
countMap[item].push(idx);
|
126
|
-
posMap[item] = 0;
|
127
|
-
});
|
128
|
-
if(comparator) {
|
129
|
-
Object.keys(countMap).forEach(item => {
|
130
|
-
countMap[item].sort(comparator);
|
131
|
-
});
|
132
|
-
}
|
133
|
-
return array.map((item, i) => {
|
134
|
-
if(countMap[item].length > 1) {
|
135
|
-
if(comparator && countMap[item][0] === i)
|
136
|
-
return item;
|
137
|
-
return fn(item, i, posMap[item]++);
|
138
|
-
} else return item;
|
139
|
-
});
|
140
|
-
};
|
141
|
-
|
142
|
-
ModuleFilenameHelpers.matchPart = function matchPart(str, test) {
|
143
|
-
if(!test) return true;
|
144
|
-
test = asRegExp(test);
|
145
|
-
if(Array.isArray(test)) {
|
146
|
-
return test.map(asRegExp).filter(function(regExp) {
|
147
|
-
return regExp.test(str);
|
148
|
-
}).length > 0;
|
149
|
-
} else {
|
150
|
-
return test.test(str);
|
151
|
-
}
|
152
|
-
};
|
153
|
-
|
154
|
-
ModuleFilenameHelpers.matchObject = function matchObject(obj, str) {
|
155
|
-
if(obj.test)
|
156
|
-
if(!ModuleFilenameHelpers.matchPart(str, obj.test)) return false;
|
157
|
-
if(obj.include)
|
158
|
-
if(!ModuleFilenameHelpers.matchPart(str, obj.include)) return false;
|
159
|
-
if(obj.exclude)
|
160
|
-
if(ModuleFilenameHelpers.matchPart(str, obj.exclude)) return false;
|
161
|
-
return true;
|
162
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const ModuleFilenameHelpers = exports;
|
8
|
+
|
9
|
+
ModuleFilenameHelpers.ALL_LOADERS_RESOURCE = "[all-loaders][resource]";
|
10
|
+
ModuleFilenameHelpers.REGEXP_ALL_LOADERS_RESOURCE = /\[all-?loaders\]\[resource\]/gi;
|
11
|
+
ModuleFilenameHelpers.LOADERS_RESOURCE = "[loaders][resource]";
|
12
|
+
ModuleFilenameHelpers.REGEXP_LOADERS_RESOURCE = /\[loaders\]\[resource\]/gi;
|
13
|
+
ModuleFilenameHelpers.RESOURCE = "[resource]";
|
14
|
+
ModuleFilenameHelpers.REGEXP_RESOURCE = /\[resource\]/gi;
|
15
|
+
ModuleFilenameHelpers.ABSOLUTE_RESOURCE_PATH = "[absolute-resource-path]";
|
16
|
+
ModuleFilenameHelpers.REGEXP_ABSOLUTE_RESOURCE_PATH = /\[abs(olute)?-?resource-?path\]/gi;
|
17
|
+
ModuleFilenameHelpers.RESOURCE_PATH = "[resource-path]";
|
18
|
+
ModuleFilenameHelpers.REGEXP_RESOURCE_PATH = /\[resource-?path\]/gi;
|
19
|
+
ModuleFilenameHelpers.ALL_LOADERS = "[all-loaders]";
|
20
|
+
ModuleFilenameHelpers.REGEXP_ALL_LOADERS = /\[all-?loaders\]/gi;
|
21
|
+
ModuleFilenameHelpers.LOADERS = "[loaders]";
|
22
|
+
ModuleFilenameHelpers.REGEXP_LOADERS = /\[loaders\]/gi;
|
23
|
+
ModuleFilenameHelpers.QUERY = "[query]";
|
24
|
+
ModuleFilenameHelpers.REGEXP_QUERY = /\[query\]/gi;
|
25
|
+
ModuleFilenameHelpers.ID = "[id]";
|
26
|
+
ModuleFilenameHelpers.REGEXP_ID = /\[id\]/gi;
|
27
|
+
ModuleFilenameHelpers.HASH = "[hash]";
|
28
|
+
ModuleFilenameHelpers.REGEXP_HASH = /\[hash\]/gi;
|
29
|
+
|
30
|
+
function getAfter(str, token) {
|
31
|
+
const idx = str.indexOf(token);
|
32
|
+
return idx < 0 ? "" : str.substr(idx);
|
33
|
+
}
|
34
|
+
|
35
|
+
function getBefore(str, token) {
|
36
|
+
const idx = str.lastIndexOf(token);
|
37
|
+
return idx < 0 ? "" : str.substr(0, idx);
|
38
|
+
}
|
39
|
+
|
40
|
+
function getHash(str) {
|
41
|
+
const hash = require("crypto").createHash("md5");
|
42
|
+
hash.update(str);
|
43
|
+
return hash.digest("hex").substr(0, 4);
|
44
|
+
}
|
45
|
+
|
46
|
+
function asRegExp(test) {
|
47
|
+
if(typeof test === "string") test = new RegExp("^" + test.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"));
|
48
|
+
return test;
|
49
|
+
}
|
50
|
+
|
51
|
+
ModuleFilenameHelpers.createFilename = function createFilename(module, moduleFilenameTemplate, requestShortener) {
|
52
|
+
let absoluteResourcePath;
|
53
|
+
let hash;
|
54
|
+
let identifier;
|
55
|
+
let moduleId;
|
56
|
+
let shortIdentifier;
|
57
|
+
if(module === undefined) module = "";
|
58
|
+
if(typeof module === "string") {
|
59
|
+
shortIdentifier = requestShortener.shorten(module);
|
60
|
+
identifier = shortIdentifier;
|
61
|
+
moduleId = "";
|
62
|
+
absoluteResourcePath = module.split("!").pop();
|
63
|
+
hash = getHash(identifier);
|
64
|
+
} else {
|
65
|
+
shortIdentifier = module.readableIdentifier(requestShortener);
|
66
|
+
identifier = requestShortener.shorten(module.identifier());
|
67
|
+
moduleId = module.id;
|
68
|
+
absoluteResourcePath = module.identifier().split("!").pop();
|
69
|
+
hash = getHash(identifier);
|
70
|
+
}
|
71
|
+
const resource = shortIdentifier.split("!").pop();
|
72
|
+
const loaders = getBefore(shortIdentifier, "!");
|
73
|
+
const allLoaders = getBefore(identifier, "!");
|
74
|
+
const query = getAfter(resource, "?");
|
75
|
+
const resourcePath = resource.substr(0, resource.length - query.length);
|
76
|
+
if(typeof moduleFilenameTemplate === "function") {
|
77
|
+
return moduleFilenameTemplate({
|
78
|
+
identifier: identifier,
|
79
|
+
shortIdentifier: shortIdentifier,
|
80
|
+
resource: resource,
|
81
|
+
resourcePath: resourcePath,
|
82
|
+
absoluteResourcePath: absoluteResourcePath,
|
83
|
+
allLoaders: allLoaders,
|
84
|
+
query: query,
|
85
|
+
moduleId: moduleId,
|
86
|
+
hash: hash
|
87
|
+
});
|
88
|
+
}
|
89
|
+
return moduleFilenameTemplate
|
90
|
+
.replace(ModuleFilenameHelpers.REGEXP_ALL_LOADERS_RESOURCE, identifier)
|
91
|
+
.replace(ModuleFilenameHelpers.REGEXP_LOADERS_RESOURCE, shortIdentifier)
|
92
|
+
.replace(ModuleFilenameHelpers.REGEXP_RESOURCE, resource)
|
93
|
+
.replace(ModuleFilenameHelpers.REGEXP_RESOURCE_PATH, resourcePath)
|
94
|
+
.replace(ModuleFilenameHelpers.REGEXP_ABSOLUTE_RESOURCE_PATH, absoluteResourcePath)
|
95
|
+
.replace(ModuleFilenameHelpers.REGEXP_ALL_LOADERS, allLoaders)
|
96
|
+
.replace(ModuleFilenameHelpers.REGEXP_LOADERS, loaders)
|
97
|
+
.replace(ModuleFilenameHelpers.REGEXP_QUERY, query)
|
98
|
+
.replace(ModuleFilenameHelpers.REGEXP_ID, moduleId)
|
99
|
+
.replace(ModuleFilenameHelpers.REGEXP_HASH, hash);
|
100
|
+
};
|
101
|
+
|
102
|
+
ModuleFilenameHelpers.createFooter = function createFooter(module, requestShortener) {
|
103
|
+
if(!module) module = "";
|
104
|
+
if(typeof module === "string") {
|
105
|
+
return [
|
106
|
+
"// WEBPACK FOOTER //",
|
107
|
+
`// ${requestShortener.shorten(module)}`
|
108
|
+
].join("\n");
|
109
|
+
} else {
|
110
|
+
return [
|
111
|
+
"//////////////////",
|
112
|
+
"// WEBPACK FOOTER",
|
113
|
+
`// ${module.readableIdentifier(requestShortener)}`,
|
114
|
+
`// module id = ${module.id}`,
|
115
|
+
`// module chunks = ${module.mapChunks(c => c.id).join(" ")}`
|
116
|
+
].join("\n");
|
117
|
+
}
|
118
|
+
};
|
119
|
+
|
120
|
+
ModuleFilenameHelpers.replaceDuplicates = function replaceDuplicates(array, fn, comparator) {
|
121
|
+
const countMap = Object.create(null);
|
122
|
+
const posMap = Object.create(null);
|
123
|
+
array.forEach((item, idx) => {
|
124
|
+
countMap[item] = (countMap[item] || []);
|
125
|
+
countMap[item].push(idx);
|
126
|
+
posMap[item] = 0;
|
127
|
+
});
|
128
|
+
if(comparator) {
|
129
|
+
Object.keys(countMap).forEach(item => {
|
130
|
+
countMap[item].sort(comparator);
|
131
|
+
});
|
132
|
+
}
|
133
|
+
return array.map((item, i) => {
|
134
|
+
if(countMap[item].length > 1) {
|
135
|
+
if(comparator && countMap[item][0] === i)
|
136
|
+
return item;
|
137
|
+
return fn(item, i, posMap[item]++);
|
138
|
+
} else return item;
|
139
|
+
});
|
140
|
+
};
|
141
|
+
|
142
|
+
ModuleFilenameHelpers.matchPart = function matchPart(str, test) {
|
143
|
+
if(!test) return true;
|
144
|
+
test = asRegExp(test);
|
145
|
+
if(Array.isArray(test)) {
|
146
|
+
return test.map(asRegExp).filter(function(regExp) {
|
147
|
+
return regExp.test(str);
|
148
|
+
}).length > 0;
|
149
|
+
} else {
|
150
|
+
return test.test(str);
|
151
|
+
}
|
152
|
+
};
|
153
|
+
|
154
|
+
ModuleFilenameHelpers.matchObject = function matchObject(obj, str) {
|
155
|
+
if(obj.test)
|
156
|
+
if(!ModuleFilenameHelpers.matchPart(str, obj.test)) return false;
|
157
|
+
if(obj.include)
|
158
|
+
if(!ModuleFilenameHelpers.matchPart(str, obj.include)) return false;
|
159
|
+
if(obj.exclude)
|
160
|
+
if(ModuleFilenameHelpers.matchPart(str, obj.exclude)) return false;
|
161
|
+
return true;
|
162
|
+
};
|
@@ -1,26 +1,26 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const WebpackError = require("./WebpackError");
|
8
|
-
|
9
|
-
class ModuleNotFoundError extends WebpackError {
|
10
|
-
constructor(module, err, dependencies) {
|
11
|
-
super();
|
12
|
-
|
13
|
-
this.name = "ModuleNotFoundError";
|
14
|
-
this.message = "Module not found: " + err;
|
15
|
-
this.details = err.details;
|
16
|
-
this.missing = err.missing;
|
17
|
-
this.module = module;
|
18
|
-
this.origin = module;
|
19
|
-
this.dependencies = dependencies;
|
20
|
-
this.error = err;
|
21
|
-
|
22
|
-
Error.captureStackTrace(this, this.constructor);
|
23
|
-
}
|
24
|
-
}
|
25
|
-
|
26
|
-
module.exports = ModuleNotFoundError;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const WebpackError = require("./WebpackError");
|
8
|
+
|
9
|
+
class ModuleNotFoundError extends WebpackError {
|
10
|
+
constructor(module, err, dependencies) {
|
11
|
+
super();
|
12
|
+
|
13
|
+
this.name = "ModuleNotFoundError";
|
14
|
+
this.message = "Module not found: " + err;
|
15
|
+
this.details = err.details;
|
16
|
+
this.missing = err.missing;
|
17
|
+
this.module = module;
|
18
|
+
this.origin = module;
|
19
|
+
this.dependencies = dependencies;
|
20
|
+
this.error = err;
|
21
|
+
|
22
|
+
Error.captureStackTrace(this, this.constructor);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
module.exports = ModuleNotFoundError;
|
package/lib/ModuleReason.js
CHANGED
@@ -1,50 +1,50 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const util = require("util");
|
8
|
-
|
9
|
-
class ModuleReason {
|
10
|
-
constructor(module, dependency) {
|
11
|
-
this.module = module;
|
12
|
-
this.dependency = dependency;
|
13
|
-
this._chunks = null;
|
14
|
-
}
|
15
|
-
|
16
|
-
hasChunk(chunk) {
|
17
|
-
if(this._chunks) {
|
18
|
-
if(this._chunks.has(chunk))
|
19
|
-
return true;
|
20
|
-
} else if(this.module._chunks.has(chunk))
|
21
|
-
return true;
|
22
|
-
return false;
|
23
|
-
}
|
24
|
-
|
25
|
-
rewriteChunks(oldChunk, newChunks) {
|
26
|
-
if(!this._chunks) {
|
27
|
-
if(!this.module._chunks.has(oldChunk))
|
28
|
-
return;
|
29
|
-
this._chunks = new Set(this.module._chunks);
|
30
|
-
}
|
31
|
-
if(this._chunks.has(oldChunk)) {
|
32
|
-
this._chunks.delete(oldChunk);
|
33
|
-
for(let i = 0; i < newChunks.length; i++) {
|
34
|
-
this._chunks.add(newChunks[i]);
|
35
|
-
}
|
36
|
-
}
|
37
|
-
}
|
38
|
-
}
|
39
|
-
|
40
|
-
Object.defineProperty(ModuleReason.prototype, "chunks", {
|
41
|
-
configurable: false,
|
42
|
-
get: util.deprecate(function() {
|
43
|
-
return this._chunks ? Array.from(this._chunks) : null;
|
44
|
-
}, "ModuleReason.chunks: Use ModuleReason.hasChunk/rewriteChunks instead"),
|
45
|
-
set() {
|
46
|
-
throw new Error("Readonly. Use ModuleReason.rewriteChunks to modify chunks.");
|
47
|
-
}
|
48
|
-
});
|
49
|
-
|
50
|
-
module.exports = ModuleReason;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const util = require("util");
|
8
|
+
|
9
|
+
class ModuleReason {
|
10
|
+
constructor(module, dependency) {
|
11
|
+
this.module = module;
|
12
|
+
this.dependency = dependency;
|
13
|
+
this._chunks = null;
|
14
|
+
}
|
15
|
+
|
16
|
+
hasChunk(chunk) {
|
17
|
+
if(this._chunks) {
|
18
|
+
if(this._chunks.has(chunk))
|
19
|
+
return true;
|
20
|
+
} else if(this.module._chunks.has(chunk))
|
21
|
+
return true;
|
22
|
+
return false;
|
23
|
+
}
|
24
|
+
|
25
|
+
rewriteChunks(oldChunk, newChunks) {
|
26
|
+
if(!this._chunks) {
|
27
|
+
if(!this.module._chunks.has(oldChunk))
|
28
|
+
return;
|
29
|
+
this._chunks = new Set(this.module._chunks);
|
30
|
+
}
|
31
|
+
if(this._chunks.has(oldChunk)) {
|
32
|
+
this._chunks.delete(oldChunk);
|
33
|
+
for(let i = 0; i < newChunks.length; i++) {
|
34
|
+
this._chunks.add(newChunks[i]);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
Object.defineProperty(ModuleReason.prototype, "chunks", {
|
41
|
+
configurable: false,
|
42
|
+
get: util.deprecate(function() {
|
43
|
+
return this._chunks ? Array.from(this._chunks) : null;
|
44
|
+
}, "ModuleReason.chunks: Use ModuleReason.hasChunk/rewriteChunks instead"),
|
45
|
+
set() {
|
46
|
+
throw new Error("Readonly. Use ModuleReason.rewriteChunks to modify chunks.");
|
47
|
+
}
|
48
|
+
});
|
49
|
+
|
50
|
+
module.exports = ModuleReason;
|
package/lib/ModuleTemplate.js
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const Template = require("./Template");
|
8
|
-
|
9
|
-
module.exports = class ModuleTemplate extends Template {
|
10
|
-
constructor(outputOptions) {
|
11
|
-
super(outputOptions);
|
12
|
-
}
|
13
|
-
render(module, dependencyTemplates, chunk) {
|
14
|
-
const moduleSource = module.source(dependencyTemplates, this.outputOptions, this.requestShortener);
|
15
|
-
const moduleSourcePostModule = this.applyPluginsWaterfall("module", moduleSource, module, chunk, dependencyTemplates);
|
16
|
-
const moduleSourcePostRender = this.applyPluginsWaterfall("render", moduleSourcePostModule, module, chunk, dependencyTemplates);
|
17
|
-
return this.applyPluginsWaterfall("package", moduleSourcePostRender, module, chunk, dependencyTemplates);
|
18
|
-
}
|
19
|
-
updateHash(hash) {
|
20
|
-
hash.update("1");
|
21
|
-
this.applyPlugins("hash", hash);
|
22
|
-
}
|
23
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const Template = require("./Template");
|
8
|
+
|
9
|
+
module.exports = class ModuleTemplate extends Template {
|
10
|
+
constructor(outputOptions) {
|
11
|
+
super(outputOptions);
|
12
|
+
}
|
13
|
+
render(module, dependencyTemplates, chunk) {
|
14
|
+
const moduleSource = module.source(dependencyTemplates, this.outputOptions, this.requestShortener);
|
15
|
+
const moduleSourcePostModule = this.applyPluginsWaterfall("module", moduleSource, module, chunk, dependencyTemplates);
|
16
|
+
const moduleSourcePostRender = this.applyPluginsWaterfall("render", moduleSourcePostModule, module, chunk, dependencyTemplates);
|
17
|
+
return this.applyPluginsWaterfall("package", moduleSourcePostRender, module, chunk, dependencyTemplates);
|
18
|
+
}
|
19
|
+
updateHash(hash) {
|
20
|
+
hash.update("1");
|
21
|
+
this.applyPlugins("hash", hash);
|
22
|
+
}
|
23
|
+
};
|
package/lib/ModuleWarning.js
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const WebpackError = require("./WebpackError");
|
8
|
-
const cleanUp = require("./ErrorHelpers").cleanUp;
|
9
|
-
|
10
|
-
class ModuleWarning extends WebpackError {
|
11
|
-
constructor(module, warning) {
|
12
|
-
super();
|
13
|
-
|
14
|
-
this.name = "ModuleWarning";
|
15
|
-
this.module = module;
|
16
|
-
this.message = warning && typeof warning === "object" && warning.message ? warning.message : warning;
|
17
|
-
this.warning = warning;
|
18
|
-
this.details = warning && typeof warning === "object" && warning.stack ? cleanUp(warning.stack, this.message) : undefined;
|
19
|
-
|
20
|
-
Error.captureStackTrace(this, this.constructor);
|
21
|
-
}
|
22
|
-
}
|
23
|
-
|
24
|
-
module.exports = ModuleWarning;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const WebpackError = require("./WebpackError");
|
8
|
+
const cleanUp = require("./ErrorHelpers").cleanUp;
|
9
|
+
|
10
|
+
class ModuleWarning extends WebpackError {
|
11
|
+
constructor(module, warning) {
|
12
|
+
super();
|
13
|
+
|
14
|
+
this.name = "ModuleWarning";
|
15
|
+
this.module = module;
|
16
|
+
this.message = warning && typeof warning === "object" && warning.message ? warning.message : warning;
|
17
|
+
this.warning = warning;
|
18
|
+
this.details = warning && typeof warning === "object" && warning.stack ? cleanUp(warning.stack, this.message) : undefined;
|
19
|
+
|
20
|
+
Error.captureStackTrace(this, this.constructor);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
module.exports = ModuleWarning;
|
@@ -1,21 +1,21 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
module.exports = class MovedToPluginWarningPlugin {
|
7
|
-
constructor(optionName, pluginName) {
|
8
|
-
this.optionName = optionName;
|
9
|
-
this.pluginName = pluginName;
|
10
|
-
}
|
11
|
-
apply(compiler) {
|
12
|
-
const optionName = this.optionName;
|
13
|
-
const pluginName = this.pluginName;
|
14
|
-
compiler.plugin("compilation", (compilation) => {
|
15
|
-
compilation.warnings.push(new Error `webpack options:
|
16
|
-
DEPRECATED option ${optionName} will be moved to the ${pluginName}.
|
17
|
-
Use this instead.
|
18
|
-
For more info about the usage of the ${pluginName} see https://webpack.js.org/plugins/`);
|
19
|
-
});
|
20
|
-
}
|
21
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
module.exports = class MovedToPluginWarningPlugin {
|
7
|
+
constructor(optionName, pluginName) {
|
8
|
+
this.optionName = optionName;
|
9
|
+
this.pluginName = pluginName;
|
10
|
+
}
|
11
|
+
apply(compiler) {
|
12
|
+
const optionName = this.optionName;
|
13
|
+
const pluginName = this.pluginName;
|
14
|
+
compiler.plugin("compilation", (compilation) => {
|
15
|
+
compilation.warnings.push(new Error `webpack options:
|
16
|
+
DEPRECATED option ${optionName} will be moved to the ${pluginName}.
|
17
|
+
Use this instead.
|
18
|
+
For more info about the usage of the ${pluginName} see https://webpack.js.org/plugins/`);
|
19
|
+
});
|
20
|
+
}
|
21
|
+
};
|