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/Entrypoint.js
CHANGED
@@ -1,54 +1,54 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const ChunkGroup = require("./ChunkGroup");
|
8
|
-
|
9
|
-
/** @typedef {import("./Chunk
|
10
|
-
|
11
|
-
/**
|
12
|
-
* Entrypoint serves as an encapsulation primitive for chunks that are
|
13
|
-
* a part of a single ChunkGroup. They represent all bundles that need to be loaded for a
|
14
|
-
* single instance of a page. Multi-page application architectures will typically yield multiple Entrypoint objects
|
15
|
-
* inside of the compilation, whereas a Single Page App may only contain one with many lazy-loaded chunks.
|
16
|
-
*/
|
17
|
-
class Entrypoint extends ChunkGroup {
|
18
|
-
/**
|
19
|
-
* Creates an instance of Entrypoint.
|
20
|
-
* @param {string} name the name of the entrypoint
|
21
|
-
*/
|
22
|
-
constructor(name) {
|
23
|
-
super(name);
|
24
|
-
/** @type {Chunk=} */
|
25
|
-
this.runtimeChunk = undefined;
|
26
|
-
}
|
27
|
-
|
28
|
-
/**
|
29
|
-
* isInitial will always return true for Entrypoint ChunkGroup.
|
30
|
-
* @returns {true} returns true as all entrypoints are initial ChunkGroups
|
31
|
-
*/
|
32
|
-
isInitial() {
|
33
|
-
return true;
|
34
|
-
}
|
35
|
-
|
36
|
-
/**
|
37
|
-
* Sets the runtimeChunk for an entrypoint.
|
38
|
-
* @param {Chunk} chunk the chunk being set as the runtime chunk.
|
39
|
-
* @returns {void}
|
40
|
-
*/
|
41
|
-
setRuntimeChunk(chunk) {
|
42
|
-
this.runtimeChunk = chunk;
|
43
|
-
}
|
44
|
-
|
45
|
-
/**
|
46
|
-
* Fetches the chunk reference containing the webpack bootstrap code
|
47
|
-
* @returns {Chunk} returns the runtime chunk or first chunk in `this.chunks`
|
48
|
-
*/
|
49
|
-
getRuntimeChunk() {
|
50
|
-
return this.runtimeChunk || this.chunks[0];
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
module.exports = Entrypoint;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const ChunkGroup = require("./ChunkGroup");
|
8
|
+
|
9
|
+
/** @typedef {import("./Chunk")} Chunk */
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Entrypoint serves as an encapsulation primitive for chunks that are
|
13
|
+
* a part of a single ChunkGroup. They represent all bundles that need to be loaded for a
|
14
|
+
* single instance of a page. Multi-page application architectures will typically yield multiple Entrypoint objects
|
15
|
+
* inside of the compilation, whereas a Single Page App may only contain one with many lazy-loaded chunks.
|
16
|
+
*/
|
17
|
+
class Entrypoint extends ChunkGroup {
|
18
|
+
/**
|
19
|
+
* Creates an instance of Entrypoint.
|
20
|
+
* @param {string} name the name of the entrypoint
|
21
|
+
*/
|
22
|
+
constructor(name) {
|
23
|
+
super(name);
|
24
|
+
/** @type {Chunk=} */
|
25
|
+
this.runtimeChunk = undefined;
|
26
|
+
}
|
27
|
+
|
28
|
+
/**
|
29
|
+
* isInitial will always return true for Entrypoint ChunkGroup.
|
30
|
+
* @returns {true} returns true as all entrypoints are initial ChunkGroups
|
31
|
+
*/
|
32
|
+
isInitial() {
|
33
|
+
return true;
|
34
|
+
}
|
35
|
+
|
36
|
+
/**
|
37
|
+
* Sets the runtimeChunk for an entrypoint.
|
38
|
+
* @param {Chunk} chunk the chunk being set as the runtime chunk.
|
39
|
+
* @returns {void}
|
40
|
+
*/
|
41
|
+
setRuntimeChunk(chunk) {
|
42
|
+
this.runtimeChunk = chunk;
|
43
|
+
}
|
44
|
+
|
45
|
+
/**
|
46
|
+
* Fetches the chunk reference containing the webpack bootstrap code
|
47
|
+
* @returns {Chunk} returns the runtime chunk or first chunk in `this.chunks`
|
48
|
+
*/
|
49
|
+
getRuntimeChunk() {
|
50
|
+
return this.runtimeChunk || this.chunks[0];
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
module.exports = Entrypoint;
|
package/lib/EnvironmentPlugin.js
CHANGED
@@ -1,65 +1,72 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Authors Simen Brekken @simenbrekken, Einar Löve @einarlove
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
const
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
this.keys =
|
21
|
-
this.defaultValues =
|
22
|
-
} else {
|
23
|
-
this.keys = keys;
|
24
|
-
this.defaultValues =
|
25
|
-
}
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
if (
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Authors Simen Brekken @simenbrekken, Einar Löve @einarlove
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
/** @typedef {import("./Compiler")} Compiler */
|
9
|
+
|
10
|
+
const WebpackError = require("./WebpackError");
|
11
|
+
const DefinePlugin = require("./DefinePlugin");
|
12
|
+
|
13
|
+
const needsEnvVarFix =
|
14
|
+
["8", "9"].indexOf(process.versions.node.split(".")[0]) >= 0 &&
|
15
|
+
process.platform === "win32";
|
16
|
+
|
17
|
+
class EnvironmentPlugin {
|
18
|
+
constructor(...keys) {
|
19
|
+
if (keys.length === 1 && Array.isArray(keys[0])) {
|
20
|
+
this.keys = keys[0];
|
21
|
+
this.defaultValues = {};
|
22
|
+
} else if (keys.length === 1 && keys[0] && typeof keys[0] === "object") {
|
23
|
+
this.keys = Object.keys(keys[0]);
|
24
|
+
this.defaultValues = keys[0];
|
25
|
+
} else {
|
26
|
+
this.keys = keys;
|
27
|
+
this.defaultValues = {};
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
/**
|
32
|
+
* @param {Compiler} compiler webpack compiler instance
|
33
|
+
* @returns {void}
|
34
|
+
*/
|
35
|
+
apply(compiler) {
|
36
|
+
const definitions = this.keys.reduce((defs, key) => {
|
37
|
+
// TODO remove once the fix has made its way into Node 8.
|
38
|
+
// Work around https://github.com/nodejs/node/pull/18463,
|
39
|
+
// affecting Node 8 & 9 by performing an OS-level
|
40
|
+
// operation that always succeeds before reading
|
41
|
+
// environment variables:
|
42
|
+
if (needsEnvVarFix) require("os").cpus();
|
43
|
+
|
44
|
+
const value =
|
45
|
+
process.env[key] !== undefined
|
46
|
+
? process.env[key]
|
47
|
+
: this.defaultValues[key];
|
48
|
+
|
49
|
+
if (value === undefined) {
|
50
|
+
compiler.hooks.thisCompilation.tap("EnvironmentPlugin", compilation => {
|
51
|
+
const error = new WebpackError(
|
52
|
+
`EnvironmentPlugin - ${key} environment variable is undefined.\n\n` +
|
53
|
+
"You can pass an object with default values to suppress this warning.\n" +
|
54
|
+
"See https://webpack.js.org/plugins/environment-plugin for example."
|
55
|
+
);
|
56
|
+
|
57
|
+
error.name = "EnvVariableNotDefinedError";
|
58
|
+
compilation.warnings.push(error);
|
59
|
+
});
|
60
|
+
}
|
61
|
+
|
62
|
+
defs[`process.env.${key}`] =
|
63
|
+
typeof value === "undefined" ? "undefined" : JSON.stringify(value);
|
64
|
+
|
65
|
+
return defs;
|
66
|
+
}, {});
|
67
|
+
|
68
|
+
new DefinePlugin(definitions).apply(compiler);
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
module.exports = EnvironmentPlugin;
|
package/lib/ErrorHelpers.js
CHANGED
@@ -1,60 +1,60 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const loaderFlag = "LOADER_EXECUTION";
|
8
|
-
|
9
|
-
const webpackOptionsFlag = "WEBPACK_OPTIONS";
|
10
|
-
|
11
|
-
exports.cutOffByFlag = (stack, flag) => {
|
12
|
-
stack = stack.split("\n");
|
13
|
-
for (let i = 0; i < stack.length; i++) {
|
14
|
-
if (stack[i].includes(flag)) {
|
15
|
-
stack.length = i;
|
16
|
-
}
|
17
|
-
}
|
18
|
-
return stack.join("\n");
|
19
|
-
};
|
20
|
-
|
21
|
-
exports.cutOffLoaderExecution = stack =>
|
22
|
-
exports.cutOffByFlag(stack, loaderFlag);
|
23
|
-
|
24
|
-
exports.cutOffWebpackOptions = stack =>
|
25
|
-
exports.cutOffByFlag(stack, webpackOptionsFlag);
|
26
|
-
|
27
|
-
exports.cutOffMultilineMessage = (stack, message) => {
|
28
|
-
stack = stack.split("\n");
|
29
|
-
message = message.split("\n");
|
30
|
-
|
31
|
-
return stack
|
32
|
-
.reduce(
|
33
|
-
(acc, line, idx) =>
|
34
|
-
line.includes(message[idx]) ? acc : acc.concat(line),
|
35
|
-
[]
|
36
|
-
)
|
37
|
-
.join("\n");
|
38
|
-
};
|
39
|
-
|
40
|
-
exports.cutOffMessage = (stack, message) => {
|
41
|
-
const nextLine = stack.indexOf("\n");
|
42
|
-
if (nextLine === -1) {
|
43
|
-
return stack === message ? "" : stack;
|
44
|
-
} else {
|
45
|
-
const firstLine = stack.substr(0, nextLine);
|
46
|
-
return firstLine === message ? stack.substr(nextLine + 1) : stack;
|
47
|
-
}
|
48
|
-
};
|
49
|
-
|
50
|
-
exports.cleanUp = (stack, message) => {
|
51
|
-
stack = exports.cutOffLoaderExecution(stack);
|
52
|
-
stack = exports.cutOffMessage(stack, message);
|
53
|
-
return stack;
|
54
|
-
};
|
55
|
-
|
56
|
-
exports.cleanUpWebpackOptions = (stack, message) => {
|
57
|
-
stack = exports.cutOffWebpackOptions(stack);
|
58
|
-
stack = exports.cutOffMultilineMessage(stack, message);
|
59
|
-
return stack;
|
60
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const loaderFlag = "LOADER_EXECUTION";
|
8
|
+
|
9
|
+
const webpackOptionsFlag = "WEBPACK_OPTIONS";
|
10
|
+
|
11
|
+
exports.cutOffByFlag = (stack, flag) => {
|
12
|
+
stack = stack.split("\n");
|
13
|
+
for (let i = 0; i < stack.length; i++) {
|
14
|
+
if (stack[i].includes(flag)) {
|
15
|
+
stack.length = i;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
return stack.join("\n");
|
19
|
+
};
|
20
|
+
|
21
|
+
exports.cutOffLoaderExecution = stack =>
|
22
|
+
exports.cutOffByFlag(stack, loaderFlag);
|
23
|
+
|
24
|
+
exports.cutOffWebpackOptions = stack =>
|
25
|
+
exports.cutOffByFlag(stack, webpackOptionsFlag);
|
26
|
+
|
27
|
+
exports.cutOffMultilineMessage = (stack, message) => {
|
28
|
+
stack = stack.split("\n");
|
29
|
+
message = message.split("\n");
|
30
|
+
|
31
|
+
return stack
|
32
|
+
.reduce(
|
33
|
+
(acc, line, idx) =>
|
34
|
+
line.includes(message[idx]) ? acc : acc.concat(line),
|
35
|
+
[]
|
36
|
+
)
|
37
|
+
.join("\n");
|
38
|
+
};
|
39
|
+
|
40
|
+
exports.cutOffMessage = (stack, message) => {
|
41
|
+
const nextLine = stack.indexOf("\n");
|
42
|
+
if (nextLine === -1) {
|
43
|
+
return stack === message ? "" : stack;
|
44
|
+
} else {
|
45
|
+
const firstLine = stack.substr(0, nextLine);
|
46
|
+
return firstLine === message ? stack.substr(nextLine + 1) : stack;
|
47
|
+
}
|
48
|
+
};
|
49
|
+
|
50
|
+
exports.cleanUp = (stack, message) => {
|
51
|
+
stack = exports.cutOffLoaderExecution(stack);
|
52
|
+
stack = exports.cutOffMessage(stack, message);
|
53
|
+
return stack;
|
54
|
+
};
|
55
|
+
|
56
|
+
exports.cleanUpWebpackOptions = (stack, message) => {
|
57
|
+
stack = exports.cutOffWebpackOptions(stack);
|
58
|
+
stack = exports.cutOffMultilineMessage(stack, message);
|
59
|
+
return stack;
|
60
|
+
};
|
@@ -1,27 +1,27 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const EvalDevToolModuleTemplatePlugin = require("./EvalDevToolModuleTemplatePlugin");
|
8
|
-
|
9
|
-
class EvalDevToolModulePlugin {
|
10
|
-
constructor(options) {
|
11
|
-
this.sourceUrlComment = options.sourceUrlComment;
|
12
|
-
this.moduleFilenameTemplate = options.moduleFilenameTemplate;
|
13
|
-
this.namespace = options.namespace;
|
14
|
-
}
|
15
|
-
|
16
|
-
apply(compiler) {
|
17
|
-
compiler.hooks.compilation.tap("EvalDevToolModulePlugin", compilation => {
|
18
|
-
new EvalDevToolModuleTemplatePlugin({
|
19
|
-
sourceUrlComment: this.sourceUrlComment,
|
20
|
-
moduleFilenameTemplate: this.moduleFilenameTemplate,
|
21
|
-
namespace: this.namespace
|
22
|
-
}).apply(compilation.moduleTemplates.javascript);
|
23
|
-
});
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
module.exports = EvalDevToolModulePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const EvalDevToolModuleTemplatePlugin = require("./EvalDevToolModuleTemplatePlugin");
|
8
|
+
|
9
|
+
class EvalDevToolModulePlugin {
|
10
|
+
constructor(options) {
|
11
|
+
this.sourceUrlComment = options.sourceUrlComment;
|
12
|
+
this.moduleFilenameTemplate = options.moduleFilenameTemplate;
|
13
|
+
this.namespace = options.namespace;
|
14
|
+
}
|
15
|
+
|
16
|
+
apply(compiler) {
|
17
|
+
compiler.hooks.compilation.tap("EvalDevToolModulePlugin", compilation => {
|
18
|
+
new EvalDevToolModuleTemplatePlugin({
|
19
|
+
sourceUrlComment: this.sourceUrlComment,
|
20
|
+
moduleFilenameTemplate: this.moduleFilenameTemplate,
|
21
|
+
namespace: this.namespace
|
22
|
+
}).apply(compilation.moduleTemplates.javascript);
|
23
|
+
});
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
module.exports = EvalDevToolModulePlugin;
|
@@ -1,115 +1,115 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const { RawSource } = require("webpack-sources");
|
8
|
-
const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
|
9
|
-
|
10
|
-
const cache = new WeakMap();
|
11
|
-
|
12
|
-
class EvalSourceMapDevToolModuleTemplatePlugin {
|
13
|
-
constructor(compilation, options) {
|
14
|
-
this.compilation = compilation;
|
15
|
-
this.sourceMapComment =
|
16
|
-
options.append || "//# sourceURL=[module]\n//# sourceMappingURL=[url]";
|
17
|
-
this.moduleFilenameTemplate =
|
18
|
-
options.moduleFilenameTemplate ||
|
19
|
-
"webpack://[namespace]/[resource-path]?[hash]";
|
20
|
-
this.namespace = options.namespace || "";
|
21
|
-
this.options = options;
|
22
|
-
}
|
23
|
-
|
24
|
-
apply(moduleTemplate) {
|
25
|
-
const self = this;
|
26
|
-
const options = this.options;
|
27
|
-
const matchModule = ModuleFilenameHelpers.matchObject.bind(
|
28
|
-
ModuleFilenameHelpers,
|
29
|
-
options
|
30
|
-
);
|
31
|
-
moduleTemplate.hooks.module.tap(
|
32
|
-
"EvalSourceMapDevToolModuleTemplatePlugin",
|
33
|
-
(source, module) => {
|
34
|
-
const cachedSource = cache.get(source);
|
35
|
-
if (cachedSource !== undefined) {
|
36
|
-
return cachedSource;
|
37
|
-
}
|
38
|
-
|
39
|
-
if (!matchModule(module.resource)) {
|
40
|
-
return source;
|
41
|
-
}
|
42
|
-
|
43
|
-
/** @type {{ [key: string]: TODO; }} */
|
44
|
-
let sourceMap;
|
45
|
-
let content;
|
46
|
-
if (source.sourceAndMap) {
|
47
|
-
const sourceAndMap = source.sourceAndMap(options);
|
48
|
-
sourceMap = sourceAndMap.map;
|
49
|
-
content = sourceAndMap.source;
|
50
|
-
} else {
|
51
|
-
sourceMap = source.map(options);
|
52
|
-
content = source.source();
|
53
|
-
}
|
54
|
-
if (!sourceMap) {
|
55
|
-
return source;
|
56
|
-
}
|
57
|
-
|
58
|
-
// Clone (flat) the sourcemap to ensure that the mutations below do not persist.
|
59
|
-
sourceMap = Object.keys(sourceMap).reduce((obj, key) => {
|
60
|
-
obj[key] = sourceMap[key];
|
61
|
-
return obj;
|
62
|
-
}, {});
|
63
|
-
const modules = sourceMap.sources.map(source => {
|
64
|
-
const module = self.compilation.findModule(source);
|
65
|
-
return module || source;
|
66
|
-
});
|
67
|
-
let moduleFilenames = modules.map(module => {
|
68
|
-
return ModuleFilenameHelpers.createFilename(
|
69
|
-
module,
|
70
|
-
{
|
71
|
-
moduleFilenameTemplate: self.moduleFilenameTemplate,
|
72
|
-
namespace: self.namespace
|
73
|
-
},
|
74
|
-
moduleTemplate.runtimeTemplate.requestShortener
|
75
|
-
);
|
76
|
-
});
|
77
|
-
moduleFilenames = ModuleFilenameHelpers.replaceDuplicates(
|
78
|
-
moduleFilenames,
|
79
|
-
(filename, i, n) => {
|
80
|
-
for (let j = 0; j < n; j++) filename += "*";
|
81
|
-
return filename;
|
82
|
-
}
|
83
|
-
);
|
84
|
-
sourceMap.sources = moduleFilenames;
|
85
|
-
sourceMap.sourceRoot = options.sourceRoot || "";
|
86
|
-
sourceMap.file = `${module.id}.js`;
|
87
|
-
|
88
|
-
const footer =
|
89
|
-
self.sourceMapComment.replace(
|
90
|
-
/\[url\]/g,
|
91
|
-
`data:application/json;charset=utf-8;base64,${Buffer.from(
|
92
|
-
JSON.stringify(sourceMap),
|
93
|
-
"utf8"
|
94
|
-
).toString("base64")}`
|
95
|
-
) + `\n//# sourceURL=webpack-internal:///${module.id}\n`; // workaround for chrome bug
|
96
|
-
|
97
|
-
const evalSource = new RawSource(
|
98
|
-
`eval(${JSON.stringify(content + footer)});`
|
99
|
-
);
|
100
|
-
|
101
|
-
cache.set(source, evalSource);
|
102
|
-
|
103
|
-
return evalSource;
|
104
|
-
}
|
105
|
-
);
|
106
|
-
moduleTemplate.hooks.hash.tap(
|
107
|
-
"EvalSourceMapDevToolModuleTemplatePlugin",
|
108
|
-
hash => {
|
109
|
-
hash.update("eval-source-map");
|
110
|
-
hash.update("2");
|
111
|
-
}
|
112
|
-
);
|
113
|
-
}
|
114
|
-
}
|
115
|
-
module.exports = EvalSourceMapDevToolModuleTemplatePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const { RawSource } = require("webpack-sources");
|
8
|
+
const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
|
9
|
+
|
10
|
+
const cache = new WeakMap();
|
11
|
+
|
12
|
+
class EvalSourceMapDevToolModuleTemplatePlugin {
|
13
|
+
constructor(compilation, options) {
|
14
|
+
this.compilation = compilation;
|
15
|
+
this.sourceMapComment =
|
16
|
+
options.append || "//# sourceURL=[module]\n//# sourceMappingURL=[url]";
|
17
|
+
this.moduleFilenameTemplate =
|
18
|
+
options.moduleFilenameTemplate ||
|
19
|
+
"webpack://[namespace]/[resource-path]?[hash]";
|
20
|
+
this.namespace = options.namespace || "";
|
21
|
+
this.options = options;
|
22
|
+
}
|
23
|
+
|
24
|
+
apply(moduleTemplate) {
|
25
|
+
const self = this;
|
26
|
+
const options = this.options;
|
27
|
+
const matchModule = ModuleFilenameHelpers.matchObject.bind(
|
28
|
+
ModuleFilenameHelpers,
|
29
|
+
options
|
30
|
+
);
|
31
|
+
moduleTemplate.hooks.module.tap(
|
32
|
+
"EvalSourceMapDevToolModuleTemplatePlugin",
|
33
|
+
(source, module) => {
|
34
|
+
const cachedSource = cache.get(source);
|
35
|
+
if (cachedSource !== undefined) {
|
36
|
+
return cachedSource;
|
37
|
+
}
|
38
|
+
|
39
|
+
if (!matchModule(module.resource)) {
|
40
|
+
return source;
|
41
|
+
}
|
42
|
+
|
43
|
+
/** @type {{ [key: string]: TODO; }} */
|
44
|
+
let sourceMap;
|
45
|
+
let content;
|
46
|
+
if (source.sourceAndMap) {
|
47
|
+
const sourceAndMap = source.sourceAndMap(options);
|
48
|
+
sourceMap = sourceAndMap.map;
|
49
|
+
content = sourceAndMap.source;
|
50
|
+
} else {
|
51
|
+
sourceMap = source.map(options);
|
52
|
+
content = source.source();
|
53
|
+
}
|
54
|
+
if (!sourceMap) {
|
55
|
+
return source;
|
56
|
+
}
|
57
|
+
|
58
|
+
// Clone (flat) the sourcemap to ensure that the mutations below do not persist.
|
59
|
+
sourceMap = Object.keys(sourceMap).reduce((obj, key) => {
|
60
|
+
obj[key] = sourceMap[key];
|
61
|
+
return obj;
|
62
|
+
}, {});
|
63
|
+
const modules = sourceMap.sources.map(source => {
|
64
|
+
const module = self.compilation.findModule(source);
|
65
|
+
return module || source;
|
66
|
+
});
|
67
|
+
let moduleFilenames = modules.map(module => {
|
68
|
+
return ModuleFilenameHelpers.createFilename(
|
69
|
+
module,
|
70
|
+
{
|
71
|
+
moduleFilenameTemplate: self.moduleFilenameTemplate,
|
72
|
+
namespace: self.namespace
|
73
|
+
},
|
74
|
+
moduleTemplate.runtimeTemplate.requestShortener
|
75
|
+
);
|
76
|
+
});
|
77
|
+
moduleFilenames = ModuleFilenameHelpers.replaceDuplicates(
|
78
|
+
moduleFilenames,
|
79
|
+
(filename, i, n) => {
|
80
|
+
for (let j = 0; j < n; j++) filename += "*";
|
81
|
+
return filename;
|
82
|
+
}
|
83
|
+
);
|
84
|
+
sourceMap.sources = moduleFilenames;
|
85
|
+
sourceMap.sourceRoot = options.sourceRoot || "";
|
86
|
+
sourceMap.file = `${module.id}.js`;
|
87
|
+
|
88
|
+
const footer =
|
89
|
+
self.sourceMapComment.replace(
|
90
|
+
/\[url\]/g,
|
91
|
+
`data:application/json;charset=utf-8;base64,${Buffer.from(
|
92
|
+
JSON.stringify(sourceMap),
|
93
|
+
"utf8"
|
94
|
+
).toString("base64")}`
|
95
|
+
) + `\n//# sourceURL=webpack-internal:///${module.id}\n`; // workaround for chrome bug
|
96
|
+
|
97
|
+
const evalSource = new RawSource(
|
98
|
+
`eval(${JSON.stringify(content + footer)});`
|
99
|
+
);
|
100
|
+
|
101
|
+
cache.set(source, evalSource);
|
102
|
+
|
103
|
+
return evalSource;
|
104
|
+
}
|
105
|
+
);
|
106
|
+
moduleTemplate.hooks.hash.tap(
|
107
|
+
"EvalSourceMapDevToolModuleTemplatePlugin",
|
108
|
+
hash => {
|
109
|
+
hash.update("eval-source-map");
|
110
|
+
hash.update("2");
|
111
|
+
}
|
112
|
+
);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
module.exports = EvalSourceMapDevToolModuleTemplatePlugin;
|