webpack 4.15.0 → 4.16.2
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 +761 -758
- package/SECURITY.md +9 -9
- package/buildin/amd-define.js +3 -3
- package/buildin/amd-options.js +2 -2
- package/buildin/global.js +20 -20
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/buildin/system.js +7 -7
- package/hot/dev-server.js +61 -61
- package/hot/emitter.js +2 -2
- package/hot/log-apply-result.js +44 -44
- package/hot/log.js +45 -45
- package/hot/only-dev-server.js +105 -105
- package/hot/poll.js +40 -37
- package/hot/signal.js +62 -62
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +87 -87
- package/lib/AsyncDependencyToInitialChunkError.js +31 -31
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +117 -117
- package/lib/BasicEvaluatedExpression.js +211 -211
- package/lib/CachePlugin.js +102 -102
- package/lib/CaseSensitiveModulesWarning.js +67 -67
- package/lib/Chunk.js +833 -811
- package/lib/ChunkGroup.js +4 -4
- package/lib/ChunkRenderError.js +32 -32
- package/lib/CommentCompilationWarning.js +2 -2
- package/lib/CompatibilityPlugin.js +70 -70
- package/lib/Compilation.js +46 -15
- package/lib/ConcurrentCompilationError.js +19 -19
- package/lib/ConstPlugin.js +258 -258
- package/lib/ContextExclusionPlugin.js +28 -17
- package/lib/ContextModule.js +844 -739
- package/lib/ContextModuleFactory.js +262 -256
- package/lib/ContextReplacementPlugin.js +133 -133
- package/lib/DefinePlugin.js +49 -0
- package/lib/DelegatedModule.js +5 -0
- package/lib/DelegatedModuleFactoryPlugin.js +95 -89
- package/lib/DelegatedPlugin.js +39 -39
- package/lib/DependenciesBlock.js +1 -1
- package/lib/Dependency.js +10 -4
- package/lib/DllModule.js +60 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/DllPlugin.js +44 -44
- package/lib/DllReferencePlugin.js +132 -84
- package/lib/EntryModuleNotFoundError.js +21 -21
- package/lib/Entrypoint.js +54 -54
- package/lib/EnvironmentPlugin.js +72 -65
- package/lib/ErrorHelpers.js +60 -60
- package/lib/EvalDevToolModulePlugin.js +27 -27
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +115 -115
- package/lib/EvalSourceMapDevToolPlugin.js +41 -41
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -53
- package/lib/ExternalModule.js +165 -159
- package/lib/ExternalsPlugin.js +23 -23
- package/lib/FlagDependencyExportsPlugin.js +146 -146
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -36
- package/lib/FunctionModuleTemplatePlugin.js +100 -100
- package/lib/Generator.js +60 -52
- package/lib/HarmonyLinkingError.js +17 -17
- package/lib/HashedModuleIdsPlugin.js +53 -53
- package/lib/HotModuleReplacementPlugin.js +411 -413
- package/lib/IgnorePlugin.js +90 -90
- package/lib/JavascriptGenerator.js +229 -229
- package/lib/JavascriptModulesPlugin.js +179 -179
- package/lib/JsonGenerator.js +55 -55
- package/lib/JsonModulesPlugin.js +30 -30
- package/lib/JsonParser.js +27 -27
- package/lib/LibManifestPlugin.js +86 -86
- package/lib/LibraryTemplatePlugin.js +153 -153
- package/lib/LoaderOptionsPlugin.js +53 -53
- package/lib/LoaderTargetPlugin.js +24 -24
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/Module.js +431 -391
- package/lib/ModuleBuildError.js +52 -52
- package/lib/ModuleDependencyError.js +35 -35
- package/lib/ModuleDependencyWarning.js +25 -25
- package/lib/ModuleError.js +36 -36
- package/lib/ModuleFilenameHelpers.js +178 -178
- package/lib/ModuleNotFoundError.js +23 -23
- package/lib/ModuleParseError.js +57 -57
- package/lib/ModuleTemplate.js +93 -93
- package/lib/ModuleWarning.js +36 -36
- package/lib/MultiCompiler.js +283 -283
- package/lib/MultiModule.js +87 -81
- package/lib/MultiModuleFactory.js +23 -23
- package/lib/MultiStats.js +92 -92
- package/lib/MultiWatching.js +38 -38
- package/lib/NamedChunksPlugin.js +29 -29
- package/lib/NamedModulesPlugin.js +57 -57
- package/lib/NoEmitOnErrorsPlugin.js +20 -20
- package/lib/NoModeWarning.js +23 -23
- package/lib/NodeStuffPlugin.js +197 -179
- package/lib/NormalModule.js +542 -536
- package/lib/NormalModuleFactory.js +526 -526
- package/lib/NormalModuleReplacementPlugin.js +51 -51
- package/lib/NullFactory.js +12 -12
- package/lib/OptionsApply.js +10 -10
- package/lib/OptionsDefaulter.js +84 -84
- package/lib/Parser.js +2202 -2193
- package/lib/ParserHelpers.js +103 -103
- package/lib/PrefetchPlugin.js +37 -37
- package/lib/ProgressPlugin.js +246 -246
- package/lib/ProvidePlugin.js +86 -86
- package/lib/RawModule.js +56 -56
- package/lib/RecordIdsPlugin.js +230 -230
- package/lib/RemovedPluginError.js +11 -11
- package/lib/RequestShortener.js +83 -83
- package/lib/RequireJsStuffPlugin.js +69 -69
- package/lib/ResolverFactory.js +64 -64
- package/lib/RuntimeTemplate.js +12 -0
- package/lib/SetVarMainTemplatePlugin.js +69 -69
- package/lib/SingleEntryPlugin.js +6 -1
- package/lib/SizeFormatHelpers.js +24 -24
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -49
- package/lib/SourceMapDevToolPlugin.js +301 -301
- package/lib/Stats.js +28 -5
- package/lib/TemplatedPathPlugin.js +173 -173
- package/lib/UnsupportedFeatureWarning.js +22 -22
- package/lib/UseStrictPlugin.js +54 -54
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -37
- package/lib/WarnNoModeSetPlugin.js +17 -17
- package/lib/WatchIgnorePlugin.js +100 -100
- package/lib/Watching.js +194 -194
- package/lib/WebpackOptionsApply.js +92 -10
- package/lib/WebpackOptionsDefaulter.js +368 -354
- package/lib/debug/ProfilingPlugin.js +430 -430
- package/lib/dependencies/AMDPlugin.js +250 -250
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -49
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependency.js +135 -135
- package/lib/dependencies/AMDRequireItemDependency.js +22 -22
- package/lib/dependencies/CommonJsPlugin.js +161 -161
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -23
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +6 -0
- package/lib/dependencies/ConstDependency.js +33 -33
- package/lib/dependencies/ContextDependency.js +68 -68
- package/lib/dependencies/ContextDependencyHelpers.js +142 -142
- package/lib/dependencies/ContextDependencyTemplateAsId.js +42 -42
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +38 -38
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/CriticalDependencyWarning.js +20 -20
- package/lib/dependencies/DelegatedSourceDependency.js +18 -18
- package/lib/dependencies/DllEntryDependency.js +20 -20
- package/lib/dependencies/HarmonyAcceptDependency.js +45 -45
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -31
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +92 -92
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +139 -139
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -30
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
- package/lib/dependencies/HarmonyImportDependency.js +109 -109
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +222 -222
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -31
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +167 -167
- package/lib/dependencies/HarmonyInitDependency.js +60 -60
- package/lib/dependencies/HarmonyModulesPlugin.js +146 -146
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +26 -26
- package/lib/dependencies/ImportContextDependency.js +23 -23
- package/lib/dependencies/ImportDependenciesBlock.js +18 -18
- package/lib/dependencies/ImportDependency.js +34 -34
- package/lib/dependencies/ImportEagerDependency.js +32 -32
- package/lib/dependencies/ImportParserPlugin.js +263 -263
- package/lib/dependencies/ImportPlugin.js +82 -82
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/LoaderPlugin.js +18 -1
- package/lib/dependencies/LocalModule.js +23 -23
- package/lib/dependencies/LocalModulesHelpers.js +52 -52
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -17
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/PrefetchDependency.js +18 -18
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -56
- package/lib/dependencies/RequireContextPlugin.js +143 -143
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -33
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -116
- package/lib/dependencies/RequireEnsureDependency.js +58 -58
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
- package/lib/dependencies/RequireEnsurePlugin.js +74 -74
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -23
- package/lib/dependencies/RequireIncludePlugin.js +61 -61
- package/lib/dependencies/RequireResolveContextDependency.js +23 -23
- package/lib/dependencies/RequireResolveDependency.js +22 -22
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +85 -85
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SystemPlugin.js +125 -125
- package/lib/dependencies/UnsupportedDependency.js +27 -27
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +29 -29
- package/lib/dependencies/WebAssemblyImportDependency.js +48 -48
- package/lib/dependencies/WebpackMissingModule.js +20 -20
- package/lib/formatLocation.js +75 -61
- package/lib/node/NodeChunkTemplatePlugin.js +31 -31
- package/lib/node/NodeEnvironmentPlugin.js +28 -28
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +36 -36
- package/lib/node/NodeMainTemplate.runtime.js +27 -27
- package/lib/node/NodeMainTemplatePlugin.js +323 -323
- package/lib/node/NodeOutputFileSystem.js +22 -22
- package/lib/node/NodeSourcePlugin.js +144 -144
- package/lib/node/NodeTargetPlugin.js +18 -18
- package/lib/node/NodeTemplatePlugin.js +31 -31
- package/lib/node/NodeWatchFileSystem.js +99 -99
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +61 -61
- package/lib/optimize/AggressiveMergingPlugin.js +87 -87
- package/lib/optimize/AggressiveSplittingPlugin.js +287 -287
- package/lib/optimize/ConcatenatedModule.js +5 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +70 -70
- package/lib/optimize/FlagIncludedChunksPlugin.js +99 -99
- package/lib/optimize/LimitChunkCountPlugin.js +66 -66
- package/lib/optimize/MergeDuplicateChunksPlugin.js +78 -78
- package/lib/optimize/MinChunkSizePlugin.js +77 -77
- package/lib/optimize/NaturalChunkOrderPlugin.js +41 -0
- package/lib/optimize/OccurrenceChunkOrderPlugin.js +61 -0
- package/lib/optimize/OccurrenceModuleOrderPlugin.js +103 -0
- package/lib/optimize/OccurrenceOrderPlugin.js +135 -133
- package/lib/optimize/RemoveEmptyChunksPlugin.js +42 -42
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -127
- package/lib/optimize/RuntimeChunkPlugin.js +41 -41
- package/lib/optimize/SideEffectsFlagPlugin.js +168 -168
- package/lib/optimize/SplitChunksPlugin.js +866 -850
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -30
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +30 -30
- package/lib/performance/NoAsyncChunksWarning.js +21 -21
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/SortableSet.js +1 -0
- package/lib/util/StackedSetMap.js +144 -135
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/cachedMerge.js +35 -35
- package/lib/util/deterministicGrouping.js +251 -251
- package/lib/util/identifier.js +103 -103
- package/lib/util/objectToMap.js +16 -16
- package/lib/validateSchema.js +67 -67
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +17 -17
- package/lib/wasm/WasmFinalizeExportsPlugin.js +1 -1
- package/lib/wasm/WebAssemblyGenerator.js +16 -2
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +147 -133
- package/lib/wasm/WebAssemblyParser.js +174 -174
- package/lib/wasm/WebAssemblyUtils.js +59 -59
- package/lib/web/FetchCompileWasmTemplatePlugin.js +37 -37
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplate.runtime.js +65 -65
- package/lib/web/JsonpMainTemplatePlugin.js +1 -1
- package/lib/web/JsonpTemplatePlugin.js +23 -23
- package/lib/web/WebEnvironmentPlugin.js +18 -18
- package/lib/webpack.js +5 -0
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +65 -65
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +196 -196
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -25
- package/package.json +22 -13
- package/schemas/WebpackOptions.json +2062 -2036
- package/schemas/ajv.absolutePath.js +55 -55
- package/schemas/plugins/BannerPlugin.json +96 -96
- package/schemas/plugins/DllPlugin.json +32 -32
- package/schemas/plugins/DllReferencePlugin.json +99 -99
- package/schemas/plugins/HashedModuleIdsPlugin.json +24 -24
- package/schemas/plugins/LoaderOptionsPlugin.json +26 -26
- package/schemas/plugins/SourceMapDevToolPlugin.json +187 -187
- package/schemas/plugins/WatchIgnorePlugin.json +16 -16
- package/schemas/plugins/debug/ProfilingPlugin.json +12 -12
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +22 -22
- package/schemas/plugins/optimize/LimitChunkCountPlugin.json +15 -15
- package/schemas/plugins/optimize/MinChunkSizePlugin.json +13 -13
- package/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json +10 -0
- package/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json +10 -0
package/lib/ChunkGroup.js
CHANGED
@@ -11,7 +11,6 @@ const compareLocations = require("./compareLocations");
|
|
11
11
|
/** @typedef {import("./Module")} Module */
|
12
12
|
/** @typedef {import("./ModuleReason")} ModuleReason */
|
13
13
|
|
14
|
-
/** @typedef {{id: number}} HasId */
|
15
14
|
/** @typedef {{module: Module, loc: TODO, request: string}} OriginRecord */
|
16
15
|
/** @typedef {string|{name: string}} ChunkGroupOptions */
|
17
16
|
|
@@ -26,8 +25,8 @@ const getArray = set => Array.from(set);
|
|
26
25
|
|
27
26
|
/**
|
28
27
|
* A convenience method used to sort chunks based on their id's
|
29
|
-
* @param {
|
30
|
-
* @param {
|
28
|
+
* @param {ChunkGroup} a first sorting comparator
|
29
|
+
* @param {ChunkGroup} b second sorting comparator
|
31
30
|
* @returns {1|0|-1} a sorting index to determine order
|
32
31
|
*/
|
33
32
|
const sortById = (a, b) => {
|
@@ -63,6 +62,7 @@ class ChunkGroup {
|
|
63
62
|
/** @type {number} */
|
64
63
|
this.groupDebugId = debugId++;
|
65
64
|
this.options = options;
|
65
|
+
/** @type {SortableSet<ChunkGroup>} */
|
66
66
|
this._children = new SortableSet(undefined, sortById);
|
67
67
|
this._parents = new SortableSet(undefined, sortById);
|
68
68
|
this._blocks = new SortableSet();
|
@@ -442,7 +442,7 @@ class ChunkGroup {
|
|
442
442
|
list.sort((a, b) => {
|
443
443
|
const cmp = b.order - a.order;
|
444
444
|
if (cmp !== 0) return cmp;
|
445
|
-
//
|
445
|
+
// TODO webpack 5 remove this check of compareTo
|
446
446
|
if (a.group.compareTo) {
|
447
447
|
return a.group.compareTo(b.group);
|
448
448
|
}
|
package/lib/ChunkRenderError.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
|
-
"use strict";
|
6
|
-
|
7
|
-
const WebpackError = require("./WebpackError");
|
8
|
-
|
9
|
-
/** @typedef {import("./Chunk")} Chunk */
|
10
|
-
|
11
|
-
class ChunkRenderError extends WebpackError {
|
12
|
-
/**
|
13
|
-
* Create a new ChunkRenderError
|
14
|
-
* @param {Chunk} chunk A chunk
|
15
|
-
* @param {string} file Related file
|
16
|
-
* @param {Error} error Original error
|
17
|
-
*/
|
18
|
-
constructor(chunk, file, error) {
|
19
|
-
super();
|
20
|
-
|
21
|
-
this.name = "ChunkRenderError";
|
22
|
-
this.error = error;
|
23
|
-
this.message = error.message;
|
24
|
-
this.details = error.stack;
|
25
|
-
this.file = file;
|
26
|
-
this.chunk = chunk;
|
27
|
-
|
28
|
-
Error.captureStackTrace(this, this.constructor);
|
29
|
-
}
|
30
|
-
}
|
31
|
-
|
32
|
-
module.exports = ChunkRenderError;
|
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
|
+
/** @typedef {import("./Chunk")} Chunk */
|
10
|
+
|
11
|
+
class ChunkRenderError extends WebpackError {
|
12
|
+
/**
|
13
|
+
* Create a new ChunkRenderError
|
14
|
+
* @param {Chunk} chunk A chunk
|
15
|
+
* @param {string} file Related file
|
16
|
+
* @param {Error} error Original error
|
17
|
+
*/
|
18
|
+
constructor(chunk, file, error) {
|
19
|
+
super();
|
20
|
+
|
21
|
+
this.name = "ChunkRenderError";
|
22
|
+
this.error = error;
|
23
|
+
this.message = error.message;
|
24
|
+
this.details = error.stack;
|
25
|
+
this.file = file;
|
26
|
+
this.chunk = chunk;
|
27
|
+
|
28
|
+
Error.captureStackTrace(this, this.constructor);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
module.exports = ChunkRenderError;
|
@@ -6,9 +6,9 @@
|
|
6
6
|
|
7
7
|
const WebpackError = require("./WebpackError");
|
8
8
|
|
9
|
-
/** @typedef {import("./Module
|
9
|
+
/** @typedef {import("./Module")} Module */
|
10
10
|
|
11
|
-
/** @typedef {import("./Dependency
|
11
|
+
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
12
12
|
|
13
13
|
class CommentCompilationWarning extends WebpackError {
|
14
14
|
/**
|
@@ -1,70 +1,70 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const ConstDependency = require("./dependencies/ConstDependency");
|
8
|
-
|
9
|
-
const NullFactory = require("./NullFactory");
|
10
|
-
|
11
|
-
/** @typedef {import("./Compiler
|
12
|
-
|
13
|
-
class CompatibilityPlugin {
|
14
|
-
/**
|
15
|
-
* Apply the plugin
|
16
|
-
* @param {Compiler} compiler Webpack Compiler
|
17
|
-
* @returns {void}
|
18
|
-
*/
|
19
|
-
apply(compiler) {
|
20
|
-
compiler.hooks.compilation.tap(
|
21
|
-
"CompatibilityPlugin",
|
22
|
-
(compilation, { normalModuleFactory }) => {
|
23
|
-
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
|
24
|
-
compilation.dependencyTemplates.set(
|
25
|
-
ConstDependency,
|
26
|
-
new ConstDependency.Template()
|
27
|
-
);
|
28
|
-
|
29
|
-
normalModuleFactory.hooks.parser
|
30
|
-
.for("javascript/auto")
|
31
|
-
.tap("CompatibilityPlugin", (parser, parserOptions) => {
|
32
|
-
if (
|
33
|
-
typeof parserOptions.browserify !== "undefined" &&
|
34
|
-
!parserOptions.browserify
|
35
|
-
)
|
36
|
-
return;
|
37
|
-
|
38
|
-
parser.hooks.call
|
39
|
-
.for("require")
|
40
|
-
.tap("CompatibilityPlugin", expr => {
|
41
|
-
// support for browserify style require delegator: "require(o, !0)"
|
42
|
-
if (expr.arguments.length !== 2) return;
|
43
|
-
const second = parser.evaluateExpression(expr.arguments[1]);
|
44
|
-
if (!second.isBoolean()) return;
|
45
|
-
if (second.asBool() !== true) return;
|
46
|
-
const dep = new ConstDependency("require", expr.callee.range);
|
47
|
-
dep.loc = expr.loc;
|
48
|
-
if (parser.state.current.dependencies.length > 1) {
|
49
|
-
const last =
|
50
|
-
parser.state.current.dependencies[
|
51
|
-
parser.state.current.dependencies.length - 1
|
52
|
-
];
|
53
|
-
if (
|
54
|
-
last.critical &&
|
55
|
-
last.options &&
|
56
|
-
last.options.request === "." &&
|
57
|
-
last.userRequest === "." &&
|
58
|
-
last.options.recursive
|
59
|
-
)
|
60
|
-
parser.state.current.dependencies.pop();
|
61
|
-
}
|
62
|
-
parser.state.current.addDependency(dep);
|
63
|
-
return true;
|
64
|
-
});
|
65
|
-
});
|
66
|
-
}
|
67
|
-
);
|
68
|
-
}
|
69
|
-
}
|
70
|
-
module.exports = CompatibilityPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const ConstDependency = require("./dependencies/ConstDependency");
|
8
|
+
|
9
|
+
const NullFactory = require("./NullFactory");
|
10
|
+
|
11
|
+
/** @typedef {import("./Compiler")} Compiler */
|
12
|
+
|
13
|
+
class CompatibilityPlugin {
|
14
|
+
/**
|
15
|
+
* Apply the plugin
|
16
|
+
* @param {Compiler} compiler Webpack Compiler
|
17
|
+
* @returns {void}
|
18
|
+
*/
|
19
|
+
apply(compiler) {
|
20
|
+
compiler.hooks.compilation.tap(
|
21
|
+
"CompatibilityPlugin",
|
22
|
+
(compilation, { normalModuleFactory }) => {
|
23
|
+
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
|
24
|
+
compilation.dependencyTemplates.set(
|
25
|
+
ConstDependency,
|
26
|
+
new ConstDependency.Template()
|
27
|
+
);
|
28
|
+
|
29
|
+
normalModuleFactory.hooks.parser
|
30
|
+
.for("javascript/auto")
|
31
|
+
.tap("CompatibilityPlugin", (parser, parserOptions) => {
|
32
|
+
if (
|
33
|
+
typeof parserOptions.browserify !== "undefined" &&
|
34
|
+
!parserOptions.browserify
|
35
|
+
)
|
36
|
+
return;
|
37
|
+
|
38
|
+
parser.hooks.call
|
39
|
+
.for("require")
|
40
|
+
.tap("CompatibilityPlugin", expr => {
|
41
|
+
// support for browserify style require delegator: "require(o, !0)"
|
42
|
+
if (expr.arguments.length !== 2) return;
|
43
|
+
const second = parser.evaluateExpression(expr.arguments[1]);
|
44
|
+
if (!second.isBoolean()) return;
|
45
|
+
if (second.asBool() !== true) return;
|
46
|
+
const dep = new ConstDependency("require", expr.callee.range);
|
47
|
+
dep.loc = expr.loc;
|
48
|
+
if (parser.state.current.dependencies.length > 1) {
|
49
|
+
const last =
|
50
|
+
parser.state.current.dependencies[
|
51
|
+
parser.state.current.dependencies.length - 1
|
52
|
+
];
|
53
|
+
if (
|
54
|
+
last.critical &&
|
55
|
+
last.options &&
|
56
|
+
last.options.request === "." &&
|
57
|
+
last.userRequest === "." &&
|
58
|
+
last.options.recursive
|
59
|
+
)
|
60
|
+
parser.state.current.dependencies.pop();
|
61
|
+
}
|
62
|
+
parser.state.current.addDependency(dep);
|
63
|
+
return true;
|
64
|
+
});
|
65
|
+
});
|
66
|
+
}
|
67
|
+
);
|
68
|
+
}
|
69
|
+
}
|
70
|
+
module.exports = CompatibilityPlugin;
|
package/lib/Compilation.js
CHANGED
@@ -26,7 +26,6 @@ const ChunkTemplate = require("./ChunkTemplate");
|
|
26
26
|
const HotUpdateChunkTemplate = require("./HotUpdateChunkTemplate");
|
27
27
|
const ModuleTemplate = require("./ModuleTemplate");
|
28
28
|
const RuntimeTemplate = require("./RuntimeTemplate");
|
29
|
-
const Dependency = require("./Dependency");
|
30
29
|
const ChunkRenderError = require("./ChunkRenderError");
|
31
30
|
const AsyncDependencyToInitialChunkError = require("./AsyncDependencyToInitialChunkError");
|
32
31
|
const Stats = require("./Stats");
|
@@ -36,6 +35,7 @@ const Queue = require("./util/Queue");
|
|
36
35
|
const SortableSet = require("./util/SortableSet");
|
37
36
|
const GraphHelpers = require("./GraphHelpers");
|
38
37
|
const ModuleDependency = require("./dependencies/ModuleDependency");
|
38
|
+
const compareLocations = require("./compareLocations");
|
39
39
|
|
40
40
|
/** @typedef {import("./Module")} Module */
|
41
41
|
/** @typedef {import("./Compiler")} Compiler */
|
@@ -642,7 +642,7 @@ class Compilation extends Tapable {
|
|
642
642
|
war.dependencies = dependencies;
|
643
643
|
this.warnings.push(war);
|
644
644
|
}
|
645
|
-
module.dependencies.sort(
|
645
|
+
module.dependencies.sort((a, b) => compareLocations(a.loc, b.loc));
|
646
646
|
if (error) {
|
647
647
|
this.hooks.failedModule.call(module, error);
|
648
648
|
return callback(error);
|
@@ -888,6 +888,7 @@ class Compilation extends Tapable {
|
|
888
888
|
// leaking the Compilation object.
|
889
889
|
|
890
890
|
if (err) {
|
891
|
+
// eslint-disable-next-line no-self-assign
|
891
892
|
err.stack = err.stack;
|
892
893
|
return callback(err);
|
893
894
|
}
|
@@ -1292,6 +1293,9 @@ class Compilation extends Tapable {
|
|
1292
1293
|
* @returns {void}
|
1293
1294
|
*/
|
1294
1295
|
sortModules(modules) {
|
1296
|
+
// TODO webpack 5: this should only be enabled when `moduleIds: "natural"`
|
1297
|
+
// TODO move it into a plugin (NaturalModuleIdsPlugin) and use this in WebpackOptionsApply
|
1298
|
+
// TODO remove this method
|
1295
1299
|
modules.sort(byIndexOrIdentifier);
|
1296
1300
|
}
|
1297
1301
|
|
@@ -1453,7 +1457,7 @@ class Compilation extends Tapable {
|
|
1453
1457
|
* @returns {DependencyReference} a reference for the dependency
|
1454
1458
|
*/
|
1455
1459
|
getDependencyReference(module, dependency) {
|
1456
|
-
// TODO remove dep.getReference
|
1460
|
+
// TODO remove dep.getReference existence check in webpack 5
|
1457
1461
|
if (typeof dependency.getReference !== "function") return null;
|
1458
1462
|
const ref = dependency.getReference();
|
1459
1463
|
if (!ref) return null;
|
@@ -2113,7 +2117,7 @@ class Compilation extends Tapable {
|
|
2113
2117
|
|
2114
2118
|
/**
|
2115
2119
|
* Used to sort errors and warnings in compilation. this.warnings, and
|
2116
|
-
* this.errors contribute to the compilation hash and therefore
|
2120
|
+
* this.errors contribute to the compilation hash and therefore should be
|
2117
2121
|
* updated whenever other references (having a chunk id) are sorted. This preserves the hash
|
2118
2122
|
* integrity
|
2119
2123
|
*
|
@@ -2438,21 +2442,48 @@ class Compilation extends Tapable {
|
|
2438
2442
|
}
|
2439
2443
|
|
2440
2444
|
// TODO remove in webpack 5
|
2441
|
-
Compilation.prototype.applyPlugins = util.deprecate(
|
2442
|
-
|
2443
|
-
|
2444
|
-
|
2445
|
-
|
2445
|
+
Compilation.prototype.applyPlugins = util.deprecate(
|
2446
|
+
/**
|
2447
|
+
* @deprecated
|
2448
|
+
* @param {string} name Name
|
2449
|
+
* @param {any[]} args Other arguments
|
2450
|
+
* @returns {void}
|
2451
|
+
* @this {Compilation}
|
2452
|
+
*/
|
2453
|
+
function(name, ...args) {
|
2454
|
+
this.hooks[
|
2455
|
+
name.replace(/[- ]([a-z])/g, match => match[1].toUpperCase())
|
2456
|
+
].call(...args);
|
2457
|
+
},
|
2458
|
+
"Compilation.applyPlugins is deprecated. Use new API on `.hooks` instead"
|
2459
|
+
);
|
2446
2460
|
|
2447
2461
|
// TODO remove in webpack 5
|
2448
2462
|
Object.defineProperty(Compilation.prototype, "moduleTemplate", {
|
2449
2463
|
configurable: false,
|
2450
|
-
get: util.deprecate(
|
2451
|
-
|
2452
|
-
|
2453
|
-
|
2454
|
-
|
2455
|
-
|
2464
|
+
get: util.deprecate(
|
2465
|
+
/**
|
2466
|
+
* @deprecated
|
2467
|
+
* @this {Compilation}
|
2468
|
+
* @returns {TODO} module template
|
2469
|
+
*/
|
2470
|
+
function() {
|
2471
|
+
return this.moduleTemplates.javascript;
|
2472
|
+
},
|
2473
|
+
"Compilation.moduleTemplate: Use Compilation.moduleTemplates.javascript instead"
|
2474
|
+
),
|
2475
|
+
set: util.deprecate(
|
2476
|
+
/**
|
2477
|
+
* @deprecated
|
2478
|
+
* @param {ModuleTemplate} value Template value
|
2479
|
+
* @this {Compilation}
|
2480
|
+
* @returns {void}
|
2481
|
+
*/
|
2482
|
+
function(value) {
|
2483
|
+
this.moduleTemplates.javascript = value;
|
2484
|
+
},
|
2485
|
+
"Compilation.moduleTemplate: Use Compilation.moduleTemplates.javascript instead."
|
2486
|
+
)
|
2456
2487
|
});
|
2457
2488
|
|
2458
2489
|
module.exports = Compilation;
|
@@ -1,19 +1,19 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Maksim Nazarjev @acupofspirt
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const WebpackError = require("./WebpackError");
|
8
|
-
|
9
|
-
module.exports = class ConcurrentCompilationError extends WebpackError {
|
10
|
-
constructor() {
|
11
|
-
super();
|
12
|
-
|
13
|
-
this.name = "ConcurrentCompilationError";
|
14
|
-
this.message =
|
15
|
-
"You ran Webpack twice. Each instance only supports a single concurrent compilation at a time.";
|
16
|
-
|
17
|
-
Error.captureStackTrace(this, this.constructor);
|
18
|
-
}
|
19
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Maksim Nazarjev @acupofspirt
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const WebpackError = require("./WebpackError");
|
8
|
+
|
9
|
+
module.exports = class ConcurrentCompilationError extends WebpackError {
|
10
|
+
constructor() {
|
11
|
+
super();
|
12
|
+
|
13
|
+
this.name = "ConcurrentCompilationError";
|
14
|
+
this.message =
|
15
|
+
"You ran Webpack twice. Each instance only supports a single concurrent compilation at a time.";
|
16
|
+
|
17
|
+
Error.captureStackTrace(this, this.constructor);
|
18
|
+
}
|
19
|
+
};
|