webpack 4.9.1 → 4.10.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/README.md +755 -755
- package/SECURITY.md +9 -9
- package/buildin/global.js +20 -20
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/hot/dev-server.js +61 -61
- 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 +37 -37
- package/hot/signal.js +62 -62
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +87 -75
- package/lib/AsyncDependenciesBlock.js +66 -66
- package/lib/AsyncDependencyToInitialChunkError.js +31 -21
- package/lib/AutomaticPrefetchPlugin.js +50 -50
- package/lib/BannerPlugin.js +3 -1
- package/lib/BasicEvaluatedExpression.js +211 -208
- package/lib/CachePlugin.js +102 -95
- package/lib/CaseSensitiveModulesWarning.js +71 -53
- package/lib/Chunk.js +750 -722
- package/lib/ChunkGroup.js +13 -5
- package/lib/ChunkRenderError.js +32 -32
- package/lib/CompatibilityPlugin.js +63 -63
- package/lib/Compilation.js +1947 -1905
- package/lib/Compiler.js +508 -496
- package/lib/ConcurrentCompilationError.js +19 -19
- package/lib/ConstPlugin.js +258 -242
- package/lib/ContextExclusionPlugin.js +17 -17
- package/lib/ContextModule.js +749 -710
- package/lib/ContextModuleFactory.js +256 -245
- package/lib/ContextReplacementPlugin.js +133 -126
- package/lib/DefinePlugin.js +206 -197
- package/lib/DelegatedModule.js +101 -101
- package/lib/DelegatedModuleFactoryPlugin.js +89 -89
- package/lib/DelegatedPlugin.js +39 -39
- package/lib/DependenciesBlock.js +89 -87
- package/lib/DependenciesBlockVariable.js +52 -51
- package/lib/Dependency.js +51 -51
- package/lib/DllEntryPlugin.js +51 -51
- package/lib/DllModule.js +54 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/DllPlugin.js +44 -42
- package/lib/DllReferencePlugin.js +84 -84
- package/lib/DynamicEntryPlugin.js +73 -71
- package/lib/EntryOptionPlugin.js +33 -33
- package/lib/EnvironmentPlugin.js +65 -65
- package/lib/ErrorHelpers.js +60 -57
- package/lib/EvalDevToolModulePlugin.js +27 -27
- package/lib/EvalDevToolModuleTemplatePlugin.js +61 -61
- package/lib/EvalSourceMapDevToolPlugin.js +41 -40
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -40
- package/lib/ExtendedAPIPlugin.js +84 -84
- package/lib/ExternalModule.js +159 -159
- package/lib/ExternalModuleFactoryPlugin.js +110 -110
- package/lib/ExternalsPlugin.js +23 -23
- package/lib/FlagDependencyExportsPlugin.js +146 -146
- package/lib/FlagDependencyUsagePlugin.js +110 -104
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -36
- package/lib/FunctionModulePlugin.js +19 -19
- package/lib/FunctionModuleTemplatePlugin.js +100 -98
- package/lib/GraphHelpers.js +64 -64
- package/lib/HarmonyLinkingError.js +18 -18
- package/lib/HashedModuleIdsPlugin.js +53 -53
- package/lib/HotModuleReplacement.runtime.js +7 -3
- package/lib/HotModuleReplacementPlugin.js +413 -406
- package/lib/HotUpdateChunk.js +16 -16
- package/lib/HotUpdateChunkTemplate.js +78 -78
- package/lib/IgnorePlugin.js +71 -71
- package/lib/JavascriptGenerator.js +229 -228
- package/lib/JavascriptModulesPlugin.js +179 -184
- package/lib/JsonGenerator.js +42 -42
- package/lib/JsonModulesPlugin.js +30 -30
- package/lib/JsonParser.js +27 -26
- package/lib/LibManifestPlugin.js +86 -86
- package/lib/LibraryTemplatePlugin.js +153 -119
- package/lib/LoaderOptionsPlugin.js +53 -52
- package/lib/LoaderTargetPlugin.js +24 -24
- package/lib/MainTemplate.js +34 -9
- package/lib/Module.js +381 -377
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleDependencyError.js +35 -25
- package/lib/ModuleDependencyWarning.js +25 -25
- package/lib/ModuleError.js +28 -28
- package/lib/ModuleFilenameHelpers.js +178 -166
- package/lib/ModuleParseError.js +44 -44
- package/lib/ModuleReason.js +40 -40
- package/lib/ModuleTemplate.js +84 -84
- package/lib/ModuleWarning.js +30 -30
- package/lib/MultiCompiler.js +283 -271
- package/lib/MultiEntryPlugin.js +58 -58
- package/lib/MultiModule.js +81 -78
- 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 +179 -178
- package/lib/NormalModule.js +497 -490
- package/lib/NormalModuleFactory.js +501 -483
- package/lib/NormalModuleReplacementPlugin.js +51 -51
- package/lib/OptionsDefaulter.js +84 -80
- package/lib/Parser.js +2164 -2086
- package/lib/ParserHelpers.js +103 -100
- package/lib/PrefetchPlugin.js +37 -37
- package/lib/ProgressPlugin.js +231 -231
- package/lib/ProvidePlugin.js +86 -86
- package/lib/RawModule.js +56 -54
- package/lib/RecordIdsPlugin.js +166 -162
- package/lib/RemovedPluginError.js +13 -13
- package/lib/RequestShortener.js +81 -74
- package/lib/RequireJsStuffPlugin.js +69 -69
- package/lib/ResolverFactory.js +64 -64
- package/lib/RuleSet.js +555 -534
- package/lib/RuntimeTemplate.js +320 -277
- package/lib/SetVarMainTemplatePlugin.js +69 -57
- package/lib/SingleEntryPlugin.js +44 -44
- package/lib/SizeFormatHelpers.js +24 -24
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -49
- package/lib/SourceMapDevToolPlugin.js +301 -300
- package/lib/Stats.js +1408 -1367
- package/lib/Template.js +4 -2
- package/lib/TemplatedPathPlugin.js +173 -170
- package/lib/UmdMainTemplatePlugin.js +304 -264
- package/lib/UseStrictPlugin.js +48 -48
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -36
- package/lib/WarnNoModeSetPlugin.js +17 -17
- package/lib/WatchIgnorePlugin.js +100 -100
- package/lib/Watching.js +194 -193
- package/lib/WebpackError.js +25 -19
- package/lib/WebpackOptionsApply.js +421 -405
- package/lib/WebpackOptionsDefaulter.js +347 -344
- package/lib/WebpackOptionsValidationError.js +345 -316
- package/lib/compareLocations.js +56 -56
- package/lib/dependencies/AMDDefineDependency.js +137 -137
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +336 -327
- package/lib/dependencies/AMDPlugin.js +250 -250
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -49
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependenciesBlock.js +43 -43
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +273 -270
- package/lib/dependencies/AMDRequireDependency.js +135 -135
- package/lib/dependencies/CommonJsPlugin.js +161 -161
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -23
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +130 -130
- package/lib/dependencies/ConstDependency.js +33 -33
- package/lib/dependencies/ContextDependency.js +68 -68
- package/lib/dependencies/ContextDependencyTemplateAsId.js +42 -42
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +38 -38
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/DelegatedExportsDependency.js +33 -33
- package/lib/dependencies/DependencyReference.js +18 -18
- package/lib/dependencies/HarmonyAcceptDependency.js +45 -45
- package/lib/dependencies/HarmonyAcceptImportDependency.js +23 -23
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -31
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +92 -90
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +139 -139
- package/lib/dependencies/HarmonyExportExpressionDependency.js +53 -53
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -30
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +620 -603
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +54 -54
- package/lib/dependencies/HarmonyImportDependency.js +104 -94
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +217 -214
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -31
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +166 -156
- 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 +233 -232
- package/lib/dependencies/ImportPlugin.js +82 -82
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/JsonExportsDependency.js +26 -26
- package/lib/dependencies/LoaderPlugin.js +98 -93
- package/lib/dependencies/LocalModuleDependency.js +28 -28
- package/lib/dependencies/LocalModulesHelpers.js +52 -45
- package/lib/dependencies/ModuleDependency.js +20 -20
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -17
- package/lib/dependencies/MultiEntryDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -56
- package/lib/dependencies/RequireContextPlugin.js +143 -141
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -33
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -112
- package/lib/dependencies/RequireEnsureDependency.js +58 -58
- package/lib/dependencies/RequireEnsurePlugin.js +74 -74
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependency.js +39 -39
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -23
- package/lib/dependencies/RequireIncludePlugin.js +61 -61
- package/lib/dependencies/RequireResolveContextDependency.js +23 -23
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +85 -85
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SingleEntryDependency.js +18 -18
- package/lib/dependencies/SystemPlugin.js +125 -125
- package/lib/dependencies/UnsupportedDependency.js +27 -27
- package/lib/dependencies/WebAssemblyImportDependency.js +48 -44
- package/lib/dependencies/WebpackMissingModule.js +20 -20
- package/lib/dependencies/getFunctionExpression.js +52 -52
- package/lib/formatLocation.js +61 -53
- 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/NodeMainTemplateAsync.runtime.js +44 -44
- package/lib/node/NodeMainTemplatePlugin.js +323 -320
- package/lib/node/NodeSourcePlugin.js +144 -140
- package/lib/node/NodeTargetPlugin.js +18 -18
- package/lib/node/NodeTemplatePlugin.js +31 -31
- package/lib/node/NodeWatchFileSystem.js +99 -82
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +52 -52
- package/lib/optimize/AggressiveMergingPlugin.js +87 -87
- package/lib/optimize/AggressiveSplittingPlugin.js +287 -281
- package/lib/optimize/ChunkModuleIdRangePlugin.js +68 -68
- package/lib/optimize/ConcatenatedModule.js +1420 -1413
- 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 -75
- package/lib/optimize/MinChunkSizePlugin.js +77 -77
- package/lib/optimize/ModuleConcatenationPlugin.js +470 -457
- package/lib/optimize/OccurrenceOrderPlugin.js +133 -126
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -117
- package/lib/optimize/RuntimeChunkPlugin.js +41 -41
- package/lib/optimize/SideEffectsFlagPlugin.js +158 -156
- package/lib/optimize/SplitChunksPlugin.js +709 -696
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -30
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +31 -31
- package/lib/performance/NoAsyncChunksWarning.js +21 -21
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/Semaphore.js +41 -41
- package/lib/util/SortableSet.js +5 -2
- package/lib/util/StackedSetMap.js +12 -5
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/cachedMerge.js +35 -35
- package/lib/util/createHash.js +77 -77
- package/lib/util/identifier.js +76 -76
- package/lib/validateSchema.js +67 -67
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +18 -18
- package/lib/wasm/WasmMainTemplatePlugin.js +310 -304
- package/lib/wasm/WebAssemblyGenerator.js +143 -19
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +90 -107
- package/lib/wasm/WebAssemblyModulesPlugin.js +80 -80
- package/lib/wasm/WebAssemblyParser.js +28 -5
- package/lib/wasm/WebAssemblyUtils.js +48 -0
- package/lib/web/FetchCompileWasmTemplatePlugin.js +25 -25
- package/lib/web/JsonpChunkTemplatePlugin.js +47 -47
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplate.runtime.js +65 -64
- package/lib/web/JsonpMainTemplatePlugin.js +576 -574
- package/lib/web/JsonpTemplatePlugin.js +23 -23
- package/lib/webpack.js +183 -182
- package/lib/webpack.web.js +31 -31
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +65 -64
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +179 -179
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -25
- package/package.json +9 -8
- package/schemas/WebpackOptions.json +1988 -1988
- package/schemas/ajv.absolutePath.js +55 -55
- 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/lib/EntryOptionPlugin.js
CHANGED
@@ -1,33 +1,33 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const SingleEntryPlugin = require("./SingleEntryPlugin");
|
8
|
-
const MultiEntryPlugin = require("./MultiEntryPlugin");
|
9
|
-
const DynamicEntryPlugin = require("./DynamicEntryPlugin");
|
10
|
-
|
11
|
-
const itemToPlugin = (context, item, name) => {
|
12
|
-
if (Array.isArray(item)) {
|
13
|
-
return new MultiEntryPlugin(context, item, name);
|
14
|
-
}
|
15
|
-
return new SingleEntryPlugin(context, item, name);
|
16
|
-
};
|
17
|
-
|
18
|
-
module.exports = class EntryOptionPlugin {
|
19
|
-
apply(compiler) {
|
20
|
-
compiler.hooks.entryOption.tap("EntryOptionPlugin", (context, entry) => {
|
21
|
-
if (typeof entry === "string" || Array.isArray(entry)) {
|
22
|
-
itemToPlugin(context, entry, "main").apply(compiler);
|
23
|
-
} else if (typeof entry === "object") {
|
24
|
-
for (const name of Object.keys(entry)) {
|
25
|
-
itemToPlugin(context, entry[name], name).apply(compiler);
|
26
|
-
}
|
27
|
-
} else if (typeof entry === "function") {
|
28
|
-
new DynamicEntryPlugin(context, entry).apply(compiler);
|
29
|
-
}
|
30
|
-
return true;
|
31
|
-
});
|
32
|
-
}
|
33
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const SingleEntryPlugin = require("./SingleEntryPlugin");
|
8
|
+
const MultiEntryPlugin = require("./MultiEntryPlugin");
|
9
|
+
const DynamicEntryPlugin = require("./DynamicEntryPlugin");
|
10
|
+
|
11
|
+
const itemToPlugin = (context, item, name) => {
|
12
|
+
if (Array.isArray(item)) {
|
13
|
+
return new MultiEntryPlugin(context, item, name);
|
14
|
+
}
|
15
|
+
return new SingleEntryPlugin(context, item, name);
|
16
|
+
};
|
17
|
+
|
18
|
+
module.exports = class EntryOptionPlugin {
|
19
|
+
apply(compiler) {
|
20
|
+
compiler.hooks.entryOption.tap("EntryOptionPlugin", (context, entry) => {
|
21
|
+
if (typeof entry === "string" || Array.isArray(entry)) {
|
22
|
+
itemToPlugin(context, entry, "main").apply(compiler);
|
23
|
+
} else if (typeof entry === "object") {
|
24
|
+
for (const name of Object.keys(entry)) {
|
25
|
+
itemToPlugin(context, entry[name], name).apply(compiler);
|
26
|
+
}
|
27
|
+
} else if (typeof entry === "function") {
|
28
|
+
new DynamicEntryPlugin(context, entry).apply(compiler);
|
29
|
+
}
|
30
|
+
return true;
|
31
|
+
});
|
32
|
+
}
|
33
|
+
};
|
package/lib/EnvironmentPlugin.js
CHANGED
@@ -1,65 +1,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
|
-
const DefinePlugin = require("./DefinePlugin");
|
9
|
-
|
10
|
-
const needsEnvVarFix =
|
11
|
-
["8", "9"].indexOf(process.versions.node.split(".")[0]) >= 0 &&
|
12
|
-
process.platform === "win32";
|
13
|
-
|
14
|
-
class EnvironmentPlugin {
|
15
|
-
constructor(...keys) {
|
16
|
-
if (keys.length === 1 && Array.isArray(keys[0])) {
|
17
|
-
this.keys = keys[0];
|
18
|
-
this.defaultValues = {};
|
19
|
-
} else if (keys.length === 1 && keys[0] && typeof keys[0] === "object") {
|
20
|
-
this.keys = Object.keys(keys[0]);
|
21
|
-
this.defaultValues = keys[0];
|
22
|
-
} else {
|
23
|
-
this.keys = keys;
|
24
|
-
this.defaultValues = {};
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
apply(compiler) {
|
29
|
-
const definitions = this.keys.reduce((defs, key) => {
|
30
|
-
// TODO remove once the fix has made its way into Node 8.
|
31
|
-
// Work around https://github.com/nodejs/node/pull/18463,
|
32
|
-
// affecting Node 8 & 9 by performing an OS-level
|
33
|
-
// operation that always succeeds before reading
|
34
|
-
// environment variables:
|
35
|
-
if (needsEnvVarFix) require("os").cpus();
|
36
|
-
|
37
|
-
const value =
|
38
|
-
process.env[key] !== undefined
|
39
|
-
? process.env[key]
|
40
|
-
: this.defaultValues[key];
|
41
|
-
|
42
|
-
if (value === undefined) {
|
43
|
-
compiler.hooks.thisCompilation.tap("EnvironmentPlugin", compilation => {
|
44
|
-
const error = new Error(
|
45
|
-
`EnvironmentPlugin - ${key} environment variable is undefined.\n\n` +
|
46
|
-
"You can pass an object with default values to suppress this warning.\n" +
|
47
|
-
"See https://webpack.js.org/plugins/environment-plugin for example."
|
48
|
-
);
|
49
|
-
|
50
|
-
error.name = "EnvVariableNotDefinedError";
|
51
|
-
compilation.warnings.push(error);
|
52
|
-
});
|
53
|
-
}
|
54
|
-
|
55
|
-
defs[`process.env.${key}`] =
|
56
|
-
typeof value === "undefined" ? "undefined" : JSON.stringify(value);
|
57
|
-
|
58
|
-
return defs;
|
59
|
-
}, {});
|
60
|
-
|
61
|
-
new DefinePlugin(definitions).apply(compiler);
|
62
|
-
}
|
63
|
-
}
|
64
|
-
|
65
|
-
module.exports = EnvironmentPlugin;
|
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
|
+
const DefinePlugin = require("./DefinePlugin");
|
9
|
+
|
10
|
+
const needsEnvVarFix =
|
11
|
+
["8", "9"].indexOf(process.versions.node.split(".")[0]) >= 0 &&
|
12
|
+
process.platform === "win32";
|
13
|
+
|
14
|
+
class EnvironmentPlugin {
|
15
|
+
constructor(...keys) {
|
16
|
+
if (keys.length === 1 && Array.isArray(keys[0])) {
|
17
|
+
this.keys = keys[0];
|
18
|
+
this.defaultValues = {};
|
19
|
+
} else if (keys.length === 1 && keys[0] && typeof keys[0] === "object") {
|
20
|
+
this.keys = Object.keys(keys[0]);
|
21
|
+
this.defaultValues = keys[0];
|
22
|
+
} else {
|
23
|
+
this.keys = keys;
|
24
|
+
this.defaultValues = {};
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
apply(compiler) {
|
29
|
+
const definitions = this.keys.reduce((defs, key) => {
|
30
|
+
// TODO remove once the fix has made its way into Node 8.
|
31
|
+
// Work around https://github.com/nodejs/node/pull/18463,
|
32
|
+
// affecting Node 8 & 9 by performing an OS-level
|
33
|
+
// operation that always succeeds before reading
|
34
|
+
// environment variables:
|
35
|
+
if (needsEnvVarFix) require("os").cpus();
|
36
|
+
|
37
|
+
const value =
|
38
|
+
process.env[key] !== undefined
|
39
|
+
? process.env[key]
|
40
|
+
: this.defaultValues[key];
|
41
|
+
|
42
|
+
if (value === undefined) {
|
43
|
+
compiler.hooks.thisCompilation.tap("EnvironmentPlugin", compilation => {
|
44
|
+
const error = new Error(
|
45
|
+
`EnvironmentPlugin - ${key} environment variable is undefined.\n\n` +
|
46
|
+
"You can pass an object with default values to suppress this warning.\n" +
|
47
|
+
"See https://webpack.js.org/plugins/environment-plugin for example."
|
48
|
+
);
|
49
|
+
|
50
|
+
error.name = "EnvVariableNotDefinedError";
|
51
|
+
compilation.warnings.push(error);
|
52
|
+
});
|
53
|
+
}
|
54
|
+
|
55
|
+
defs[`process.env.${key}`] =
|
56
|
+
typeof value === "undefined" ? "undefined" : JSON.stringify(value);
|
57
|
+
|
58
|
+
return defs;
|
59
|
+
}, {});
|
60
|
+
|
61
|
+
new DefinePlugin(definitions).apply(compiler);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
module.exports = EnvironmentPlugin;
|
package/lib/ErrorHelpers.js
CHANGED
@@ -1,57 +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
|
-
|
16
|
-
}
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
exports.
|
22
|
-
exports.cutOffByFlag(stack,
|
23
|
-
|
24
|
-
exports.
|
25
|
-
stack
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
return
|
44
|
-
}
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
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,61 +1,61 @@
|
|
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 EvalDevToolModuleTemplatePlugin {
|
13
|
-
constructor(options) {
|
14
|
-
this.sourceUrlComment = options.sourceUrlComment || "\n//# sourceURL=[url]";
|
15
|
-
this.moduleFilenameTemplate =
|
16
|
-
options.moduleFilenameTemplate ||
|
17
|
-
"webpack://[namespace]/[resourcePath]?[loaders]";
|
18
|
-
this.namespace = options.namespace || "";
|
19
|
-
}
|
20
|
-
|
21
|
-
apply(moduleTemplate) {
|
22
|
-
moduleTemplate.hooks.module.tap(
|
23
|
-
"EvalDevToolModuleTemplatePlugin",
|
24
|
-
(source, module) => {
|
25
|
-
const cacheEntry = cache.get(source);
|
26
|
-
if (cacheEntry !== undefined) return cacheEntry;
|
27
|
-
const content = source.source();
|
28
|
-
const str = ModuleFilenameHelpers.createFilename(
|
29
|
-
module,
|
30
|
-
{
|
31
|
-
moduleFilenameTemplate: this.moduleFilenameTemplate,
|
32
|
-
namespace: this.namespace
|
33
|
-
},
|
34
|
-
moduleTemplate.runtimeTemplate.requestShortener
|
35
|
-
);
|
36
|
-
const footer =
|
37
|
-
"\n" +
|
38
|
-
this.sourceUrlComment.replace(
|
39
|
-
/\[url\]/g,
|
40
|
-
encodeURI(str)
|
41
|
-
.replace(/%2F/g, "/")
|
42
|
-
.replace(/%20/g, "_")
|
43
|
-
.replace(/%5E/g, "^")
|
44
|
-
.replace(/%5C/g, "\\")
|
45
|
-
.replace(/^\//, "")
|
46
|
-
);
|
47
|
-
const result = new RawSource(
|
48
|
-
`eval(${JSON.stringify(content + footer)});`
|
49
|
-
);
|
50
|
-
cache.set(source, result);
|
51
|
-
return result;
|
52
|
-
}
|
53
|
-
);
|
54
|
-
moduleTemplate.hooks.hash.tap("EvalDevToolModuleTemplatePlugin", hash => {
|
55
|
-
hash.update("EvalDevToolModuleTemplatePlugin");
|
56
|
-
hash.update("2");
|
57
|
-
});
|
58
|
-
}
|
59
|
-
}
|
60
|
-
|
61
|
-
module.exports = EvalDevToolModuleTemplatePlugin;
|
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 EvalDevToolModuleTemplatePlugin {
|
13
|
+
constructor(options) {
|
14
|
+
this.sourceUrlComment = options.sourceUrlComment || "\n//# sourceURL=[url]";
|
15
|
+
this.moduleFilenameTemplate =
|
16
|
+
options.moduleFilenameTemplate ||
|
17
|
+
"webpack://[namespace]/[resourcePath]?[loaders]";
|
18
|
+
this.namespace = options.namespace || "";
|
19
|
+
}
|
20
|
+
|
21
|
+
apply(moduleTemplate) {
|
22
|
+
moduleTemplate.hooks.module.tap(
|
23
|
+
"EvalDevToolModuleTemplatePlugin",
|
24
|
+
(source, module) => {
|
25
|
+
const cacheEntry = cache.get(source);
|
26
|
+
if (cacheEntry !== undefined) return cacheEntry;
|
27
|
+
const content = source.source();
|
28
|
+
const str = ModuleFilenameHelpers.createFilename(
|
29
|
+
module,
|
30
|
+
{
|
31
|
+
moduleFilenameTemplate: this.moduleFilenameTemplate,
|
32
|
+
namespace: this.namespace
|
33
|
+
},
|
34
|
+
moduleTemplate.runtimeTemplate.requestShortener
|
35
|
+
);
|
36
|
+
const footer =
|
37
|
+
"\n" +
|
38
|
+
this.sourceUrlComment.replace(
|
39
|
+
/\[url\]/g,
|
40
|
+
encodeURI(str)
|
41
|
+
.replace(/%2F/g, "/")
|
42
|
+
.replace(/%20/g, "_")
|
43
|
+
.replace(/%5E/g, "^")
|
44
|
+
.replace(/%5C/g, "\\")
|
45
|
+
.replace(/^\//, "")
|
46
|
+
);
|
47
|
+
const result = new RawSource(
|
48
|
+
`eval(${JSON.stringify(content + footer)});`
|
49
|
+
);
|
50
|
+
cache.set(source, result);
|
51
|
+
return result;
|
52
|
+
}
|
53
|
+
);
|
54
|
+
moduleTemplate.hooks.hash.tap("EvalDevToolModuleTemplatePlugin", hash => {
|
55
|
+
hash.update("EvalDevToolModuleTemplatePlugin");
|
56
|
+
hash.update("2");
|
57
|
+
});
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
module.exports = EvalDevToolModuleTemplatePlugin;
|
@@ -1,40 +1,41 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const EvalSourceMapDevToolModuleTemplatePlugin = require("./EvalSourceMapDevToolModuleTemplatePlugin");
|
8
|
-
const SourceMapDevToolModuleOptionsPlugin = require("./SourceMapDevToolModuleOptionsPlugin");
|
9
|
-
|
10
|
-
class EvalSourceMapDevToolPlugin {
|
11
|
-
constructor(options) {
|
12
|
-
if (arguments.length > 1)
|
13
|
-
throw new Error(
|
14
|
-
"EvalSourceMapDevToolPlugin only takes one argument (pass an options object)"
|
15
|
-
);
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
new
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
}
|
39
|
-
|
40
|
-
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const EvalSourceMapDevToolModuleTemplatePlugin = require("./EvalSourceMapDevToolModuleTemplatePlugin");
|
8
|
+
const SourceMapDevToolModuleOptionsPlugin = require("./SourceMapDevToolModuleOptionsPlugin");
|
9
|
+
|
10
|
+
class EvalSourceMapDevToolPlugin {
|
11
|
+
constructor(options) {
|
12
|
+
if (arguments.length > 1) {
|
13
|
+
throw new Error(
|
14
|
+
"EvalSourceMapDevToolPlugin only takes one argument (pass an options object)"
|
15
|
+
);
|
16
|
+
}
|
17
|
+
if (typeof options === "string") {
|
18
|
+
options = {
|
19
|
+
append: options
|
20
|
+
};
|
21
|
+
}
|
22
|
+
if (!options) options = {};
|
23
|
+
this.options = options;
|
24
|
+
}
|
25
|
+
|
26
|
+
apply(compiler) {
|
27
|
+
const options = this.options;
|
28
|
+
compiler.hooks.compilation.tap(
|
29
|
+
"EvalSourceMapDevToolPlugin",
|
30
|
+
compilation => {
|
31
|
+
new SourceMapDevToolModuleOptionsPlugin(options).apply(compilation);
|
32
|
+
new EvalSourceMapDevToolModuleTemplatePlugin(
|
33
|
+
compilation,
|
34
|
+
options
|
35
|
+
).apply(compilation.moduleTemplates.javascript);
|
36
|
+
}
|
37
|
+
);
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
module.exports = EvalSourceMapDevToolPlugin;
|