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/LibManifestPlugin.js
CHANGED
@@ -1,86 +1,86 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const path = require("path");
|
8
|
-
const asyncLib = require("neo-async");
|
9
|
-
const SingleEntryDependency = require("./dependencies/SingleEntryDependency");
|
10
|
-
|
11
|
-
class LibManifestPlugin {
|
12
|
-
constructor(options) {
|
13
|
-
this.options = options;
|
14
|
-
}
|
15
|
-
|
16
|
-
apply(compiler) {
|
17
|
-
compiler.hooks.emit.tapAsync(
|
18
|
-
"LibManifestPlugin",
|
19
|
-
(compilation, callback) => {
|
20
|
-
asyncLib.forEach(
|
21
|
-
compilation.chunks,
|
22
|
-
(chunk, callback) => {
|
23
|
-
if (!chunk.isOnlyInitial()) {
|
24
|
-
callback();
|
25
|
-
return;
|
26
|
-
}
|
27
|
-
const targetPath = compilation.getPath(this.options.path, {
|
28
|
-
hash: compilation.hash,
|
29
|
-
chunk
|
30
|
-
});
|
31
|
-
const name =
|
32
|
-
this.options.name &&
|
33
|
-
compilation.getPath(this.options.name, {
|
34
|
-
hash: compilation.hash,
|
35
|
-
chunk
|
36
|
-
});
|
37
|
-
const manifest = {
|
38
|
-
name,
|
39
|
-
type: this.options.type,
|
40
|
-
content: Array.from(chunk.modulesIterable, module => {
|
41
|
-
if (
|
42
|
-
this.options.entryOnly &&
|
43
|
-
!module.reasons.some(
|
44
|
-
r => r.dependency instanceof SingleEntryDependency
|
45
|
-
)
|
46
|
-
) {
|
47
|
-
return;
|
48
|
-
}
|
49
|
-
if (module.libIdent) {
|
50
|
-
const ident = module.libIdent({
|
51
|
-
context: this.options.context || compiler.options.context
|
52
|
-
});
|
53
|
-
if (ident) {
|
54
|
-
return {
|
55
|
-
ident,
|
56
|
-
data: {
|
57
|
-
id: module.id,
|
58
|
-
buildMeta: module.buildMeta
|
59
|
-
}
|
60
|
-
};
|
61
|
-
}
|
62
|
-
}
|
63
|
-
})
|
64
|
-
.filter(Boolean)
|
65
|
-
.reduce((obj, item) => {
|
66
|
-
obj[item.ident] = item.data;
|
67
|
-
return obj;
|
68
|
-
}, Object.create(null))
|
69
|
-
};
|
70
|
-
const content = Buffer.from(JSON.stringify(manifest), "utf8");
|
71
|
-
compiler.outputFileSystem.mkdirp(path.dirname(targetPath), err => {
|
72
|
-
if (err) return callback(err);
|
73
|
-
compiler.outputFileSystem.writeFile(
|
74
|
-
targetPath,
|
75
|
-
content,
|
76
|
-
callback
|
77
|
-
);
|
78
|
-
});
|
79
|
-
},
|
80
|
-
callback
|
81
|
-
);
|
82
|
-
}
|
83
|
-
);
|
84
|
-
}
|
85
|
-
}
|
86
|
-
module.exports = LibManifestPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const path = require("path");
|
8
|
+
const asyncLib = require("neo-async");
|
9
|
+
const SingleEntryDependency = require("./dependencies/SingleEntryDependency");
|
10
|
+
|
11
|
+
class LibManifestPlugin {
|
12
|
+
constructor(options) {
|
13
|
+
this.options = options;
|
14
|
+
}
|
15
|
+
|
16
|
+
apply(compiler) {
|
17
|
+
compiler.hooks.emit.tapAsync(
|
18
|
+
"LibManifestPlugin",
|
19
|
+
(compilation, callback) => {
|
20
|
+
asyncLib.forEach(
|
21
|
+
compilation.chunks,
|
22
|
+
(chunk, callback) => {
|
23
|
+
if (!chunk.isOnlyInitial()) {
|
24
|
+
callback();
|
25
|
+
return;
|
26
|
+
}
|
27
|
+
const targetPath = compilation.getPath(this.options.path, {
|
28
|
+
hash: compilation.hash,
|
29
|
+
chunk
|
30
|
+
});
|
31
|
+
const name =
|
32
|
+
this.options.name &&
|
33
|
+
compilation.getPath(this.options.name, {
|
34
|
+
hash: compilation.hash,
|
35
|
+
chunk
|
36
|
+
});
|
37
|
+
const manifest = {
|
38
|
+
name,
|
39
|
+
type: this.options.type,
|
40
|
+
content: Array.from(chunk.modulesIterable, module => {
|
41
|
+
if (
|
42
|
+
this.options.entryOnly &&
|
43
|
+
!module.reasons.some(
|
44
|
+
r => r.dependency instanceof SingleEntryDependency
|
45
|
+
)
|
46
|
+
) {
|
47
|
+
return;
|
48
|
+
}
|
49
|
+
if (module.libIdent) {
|
50
|
+
const ident = module.libIdent({
|
51
|
+
context: this.options.context || compiler.options.context
|
52
|
+
});
|
53
|
+
if (ident) {
|
54
|
+
return {
|
55
|
+
ident,
|
56
|
+
data: {
|
57
|
+
id: module.id,
|
58
|
+
buildMeta: module.buildMeta
|
59
|
+
}
|
60
|
+
};
|
61
|
+
}
|
62
|
+
}
|
63
|
+
})
|
64
|
+
.filter(Boolean)
|
65
|
+
.reduce((obj, item) => {
|
66
|
+
obj[item.ident] = item.data;
|
67
|
+
return obj;
|
68
|
+
}, Object.create(null))
|
69
|
+
};
|
70
|
+
const content = Buffer.from(JSON.stringify(manifest), "utf8");
|
71
|
+
compiler.outputFileSystem.mkdirp(path.dirname(targetPath), err => {
|
72
|
+
if (err) return callback(err);
|
73
|
+
compiler.outputFileSystem.writeFile(
|
74
|
+
targetPath,
|
75
|
+
content,
|
76
|
+
callback
|
77
|
+
);
|
78
|
+
});
|
79
|
+
},
|
80
|
+
callback
|
81
|
+
);
|
82
|
+
}
|
83
|
+
);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
module.exports = LibManifestPlugin;
|
@@ -1,153 +1,153 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const SetVarMainTemplatePlugin = require("./SetVarMainTemplatePlugin");
|
8
|
-
|
9
|
-
/** @typedef {import("./Compiler")} Compiler */
|
10
|
-
|
11
|
-
/**
|
12
|
-
* @param {string[]} accessor the accessor to convert to path
|
13
|
-
* @returns {string} the path
|
14
|
-
*/
|
15
|
-
const accessorToObjectAccess = accessor => {
|
16
|
-
return accessor.map(a => `[${JSON.stringify(a)}]`).join("");
|
17
|
-
};
|
18
|
-
|
19
|
-
/**
|
20
|
-
* @param {string=} base the path prefix
|
21
|
-
* @param {string|string[]} accessor the accessor
|
22
|
-
* @param {string=} joinWith the element separator
|
23
|
-
* @returns {string} the path
|
24
|
-
*/
|
25
|
-
const accessorAccess = (base, accessor, joinWith = "; ") => {
|
26
|
-
const accessors = Array.isArray(accessor) ? accessor : [accessor];
|
27
|
-
return accessors
|
28
|
-
.map((_, idx) => {
|
29
|
-
const a = base
|
30
|
-
? base + accessorToObjectAccess(accessors.slice(0, idx + 1))
|
31
|
-
: accessors[0] + accessorToObjectAccess(accessors.slice(1, idx + 1));
|
32
|
-
if (idx === accessors.length - 1) return a;
|
33
|
-
if (idx === 0 && typeof base === "undefined") {
|
34
|
-
return `${a} = typeof ${a} === "object" ? ${a} : {}`;
|
35
|
-
}
|
36
|
-
return `${a} = ${a} || {}`;
|
37
|
-
})
|
38
|
-
.join(joinWith);
|
39
|
-
};
|
40
|
-
|
41
|
-
class LibraryTemplatePlugin {
|
42
|
-
/**
|
43
|
-
* @param {string} name name of library
|
44
|
-
* @param {string} target type of library
|
45
|
-
* @param {boolean} umdNamedDefine setting this to true will name the UMD module
|
46
|
-
* @param {string|TODO} auxiliaryComment comment in the UMD wrapper
|
47
|
-
* @param {string|string[]} exportProperty which export should be exposed as library
|
48
|
-
*/
|
49
|
-
constructor(name, target, umdNamedDefine, auxiliaryComment, exportProperty) {
|
50
|
-
this.name = name;
|
51
|
-
this.target = target;
|
52
|
-
this.umdNamedDefine = umdNamedDefine;
|
53
|
-
this.auxiliaryComment = auxiliaryComment;
|
54
|
-
this.exportProperty = exportProperty;
|
55
|
-
}
|
56
|
-
|
57
|
-
/**
|
58
|
-
* @param {Compiler} compiler the compiler instance
|
59
|
-
* @returns {void}
|
60
|
-
*/
|
61
|
-
apply(compiler) {
|
62
|
-
compiler.hooks.thisCompilation.tap("LibraryTemplatePlugin", compilation => {
|
63
|
-
if (this.exportProperty) {
|
64
|
-
const ExportPropertyMainTemplatePlugin = require("./ExportPropertyMainTemplatePlugin");
|
65
|
-
new ExportPropertyMainTemplatePlugin(this.exportProperty).apply(
|
66
|
-
compilation
|
67
|
-
);
|
68
|
-
}
|
69
|
-
switch (this.target) {
|
70
|
-
case "var":
|
71
|
-
new SetVarMainTemplatePlugin(
|
72
|
-
`var ${accessorAccess(undefined, this.name)}`,
|
73
|
-
false
|
74
|
-
).apply(compilation);
|
75
|
-
break;
|
76
|
-
case "assign":
|
77
|
-
new SetVarMainTemplatePlugin(
|
78
|
-
accessorAccess(undefined, this.name),
|
79
|
-
false
|
80
|
-
).apply(compilation);
|
81
|
-
break;
|
82
|
-
case "this":
|
83
|
-
case "self":
|
84
|
-
case "window":
|
85
|
-
if (this.name) {
|
86
|
-
new SetVarMainTemplatePlugin(
|
87
|
-
accessorAccess(this.target, this.name),
|
88
|
-
false
|
89
|
-
).apply(compilation);
|
90
|
-
} else {
|
91
|
-
new SetVarMainTemplatePlugin(this.target, true).apply(compilation);
|
92
|
-
}
|
93
|
-
break;
|
94
|
-
case "global":
|
95
|
-
if (this.name) {
|
96
|
-
new SetVarMainTemplatePlugin(
|
97
|
-
accessorAccess(
|
98
|
-
compilation.runtimeTemplate.outputOptions.globalObject,
|
99
|
-
this.name
|
100
|
-
),
|
101
|
-
false
|
102
|
-
).apply(compilation);
|
103
|
-
} else {
|
104
|
-
new SetVarMainTemplatePlugin(
|
105
|
-
compilation.runtimeTemplate.outputOptions.globalObject,
|
106
|
-
true
|
107
|
-
).apply(compilation);
|
108
|
-
}
|
109
|
-
break;
|
110
|
-
case "commonjs":
|
111
|
-
if (this.name) {
|
112
|
-
new SetVarMainTemplatePlugin(
|
113
|
-
accessorAccess("exports", this.name),
|
114
|
-
false
|
115
|
-
).apply(compilation);
|
116
|
-
} else {
|
117
|
-
new SetVarMainTemplatePlugin("exports", true).apply(compilation);
|
118
|
-
}
|
119
|
-
break;
|
120
|
-
case "commonjs2":
|
121
|
-
case "commonjs-module":
|
122
|
-
new SetVarMainTemplatePlugin("module.exports", false).apply(
|
123
|
-
compilation
|
124
|
-
);
|
125
|
-
break;
|
126
|
-
case "amd": {
|
127
|
-
const AmdMainTemplatePlugin = require("./AmdMainTemplatePlugin");
|
128
|
-
new AmdMainTemplatePlugin(this.name).apply(compilation);
|
129
|
-
break;
|
130
|
-
}
|
131
|
-
case "umd":
|
132
|
-
case "umd2": {
|
133
|
-
const UmdMainTemplatePlugin = require("./UmdMainTemplatePlugin");
|
134
|
-
new UmdMainTemplatePlugin(this.name, {
|
135
|
-
optionalAmdExternalAsGlobal: this.target === "umd2",
|
136
|
-
namedDefine: this.umdNamedDefine,
|
137
|
-
auxiliaryComment: this.auxiliaryComment
|
138
|
-
}).apply(compilation);
|
139
|
-
break;
|
140
|
-
}
|
141
|
-
case "jsonp": {
|
142
|
-
const JsonpExportMainTemplatePlugin = require("./web/JsonpExportMainTemplatePlugin");
|
143
|
-
new JsonpExportMainTemplatePlugin(this.name).apply(compilation);
|
144
|
-
break;
|
145
|
-
}
|
146
|
-
default:
|
147
|
-
throw new Error(`${this.target} is not a valid Library target`);
|
148
|
-
}
|
149
|
-
});
|
150
|
-
}
|
151
|
-
}
|
152
|
-
|
153
|
-
module.exports = LibraryTemplatePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const SetVarMainTemplatePlugin = require("./SetVarMainTemplatePlugin");
|
8
|
+
|
9
|
+
/** @typedef {import("./Compiler")} Compiler */
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @param {string[]} accessor the accessor to convert to path
|
13
|
+
* @returns {string} the path
|
14
|
+
*/
|
15
|
+
const accessorToObjectAccess = accessor => {
|
16
|
+
return accessor.map(a => `[${JSON.stringify(a)}]`).join("");
|
17
|
+
};
|
18
|
+
|
19
|
+
/**
|
20
|
+
* @param {string=} base the path prefix
|
21
|
+
* @param {string|string[]} accessor the accessor
|
22
|
+
* @param {string=} joinWith the element separator
|
23
|
+
* @returns {string} the path
|
24
|
+
*/
|
25
|
+
const accessorAccess = (base, accessor, joinWith = "; ") => {
|
26
|
+
const accessors = Array.isArray(accessor) ? accessor : [accessor];
|
27
|
+
return accessors
|
28
|
+
.map((_, idx) => {
|
29
|
+
const a = base
|
30
|
+
? base + accessorToObjectAccess(accessors.slice(0, idx + 1))
|
31
|
+
: accessors[0] + accessorToObjectAccess(accessors.slice(1, idx + 1));
|
32
|
+
if (idx === accessors.length - 1) return a;
|
33
|
+
if (idx === 0 && typeof base === "undefined") {
|
34
|
+
return `${a} = typeof ${a} === "object" ? ${a} : {}`;
|
35
|
+
}
|
36
|
+
return `${a} = ${a} || {}`;
|
37
|
+
})
|
38
|
+
.join(joinWith);
|
39
|
+
};
|
40
|
+
|
41
|
+
class LibraryTemplatePlugin {
|
42
|
+
/**
|
43
|
+
* @param {string} name name of library
|
44
|
+
* @param {string} target type of library
|
45
|
+
* @param {boolean} umdNamedDefine setting this to true will name the UMD module
|
46
|
+
* @param {string|TODO} auxiliaryComment comment in the UMD wrapper
|
47
|
+
* @param {string|string[]} exportProperty which export should be exposed as library
|
48
|
+
*/
|
49
|
+
constructor(name, target, umdNamedDefine, auxiliaryComment, exportProperty) {
|
50
|
+
this.name = name;
|
51
|
+
this.target = target;
|
52
|
+
this.umdNamedDefine = umdNamedDefine;
|
53
|
+
this.auxiliaryComment = auxiliaryComment;
|
54
|
+
this.exportProperty = exportProperty;
|
55
|
+
}
|
56
|
+
|
57
|
+
/**
|
58
|
+
* @param {Compiler} compiler the compiler instance
|
59
|
+
* @returns {void}
|
60
|
+
*/
|
61
|
+
apply(compiler) {
|
62
|
+
compiler.hooks.thisCompilation.tap("LibraryTemplatePlugin", compilation => {
|
63
|
+
if (this.exportProperty) {
|
64
|
+
const ExportPropertyMainTemplatePlugin = require("./ExportPropertyMainTemplatePlugin");
|
65
|
+
new ExportPropertyMainTemplatePlugin(this.exportProperty).apply(
|
66
|
+
compilation
|
67
|
+
);
|
68
|
+
}
|
69
|
+
switch (this.target) {
|
70
|
+
case "var":
|
71
|
+
new SetVarMainTemplatePlugin(
|
72
|
+
`var ${accessorAccess(undefined, this.name)}`,
|
73
|
+
false
|
74
|
+
).apply(compilation);
|
75
|
+
break;
|
76
|
+
case "assign":
|
77
|
+
new SetVarMainTemplatePlugin(
|
78
|
+
accessorAccess(undefined, this.name),
|
79
|
+
false
|
80
|
+
).apply(compilation);
|
81
|
+
break;
|
82
|
+
case "this":
|
83
|
+
case "self":
|
84
|
+
case "window":
|
85
|
+
if (this.name) {
|
86
|
+
new SetVarMainTemplatePlugin(
|
87
|
+
accessorAccess(this.target, this.name),
|
88
|
+
false
|
89
|
+
).apply(compilation);
|
90
|
+
} else {
|
91
|
+
new SetVarMainTemplatePlugin(this.target, true).apply(compilation);
|
92
|
+
}
|
93
|
+
break;
|
94
|
+
case "global":
|
95
|
+
if (this.name) {
|
96
|
+
new SetVarMainTemplatePlugin(
|
97
|
+
accessorAccess(
|
98
|
+
compilation.runtimeTemplate.outputOptions.globalObject,
|
99
|
+
this.name
|
100
|
+
),
|
101
|
+
false
|
102
|
+
).apply(compilation);
|
103
|
+
} else {
|
104
|
+
new SetVarMainTemplatePlugin(
|
105
|
+
compilation.runtimeTemplate.outputOptions.globalObject,
|
106
|
+
true
|
107
|
+
).apply(compilation);
|
108
|
+
}
|
109
|
+
break;
|
110
|
+
case "commonjs":
|
111
|
+
if (this.name) {
|
112
|
+
new SetVarMainTemplatePlugin(
|
113
|
+
accessorAccess("exports", this.name),
|
114
|
+
false
|
115
|
+
).apply(compilation);
|
116
|
+
} else {
|
117
|
+
new SetVarMainTemplatePlugin("exports", true).apply(compilation);
|
118
|
+
}
|
119
|
+
break;
|
120
|
+
case "commonjs2":
|
121
|
+
case "commonjs-module":
|
122
|
+
new SetVarMainTemplatePlugin("module.exports", false).apply(
|
123
|
+
compilation
|
124
|
+
);
|
125
|
+
break;
|
126
|
+
case "amd": {
|
127
|
+
const AmdMainTemplatePlugin = require("./AmdMainTemplatePlugin");
|
128
|
+
new AmdMainTemplatePlugin(this.name).apply(compilation);
|
129
|
+
break;
|
130
|
+
}
|
131
|
+
case "umd":
|
132
|
+
case "umd2": {
|
133
|
+
const UmdMainTemplatePlugin = require("./UmdMainTemplatePlugin");
|
134
|
+
new UmdMainTemplatePlugin(this.name, {
|
135
|
+
optionalAmdExternalAsGlobal: this.target === "umd2",
|
136
|
+
namedDefine: this.umdNamedDefine,
|
137
|
+
auxiliaryComment: this.auxiliaryComment
|
138
|
+
}).apply(compilation);
|
139
|
+
break;
|
140
|
+
}
|
141
|
+
case "jsonp": {
|
142
|
+
const JsonpExportMainTemplatePlugin = require("./web/JsonpExportMainTemplatePlugin");
|
143
|
+
new JsonpExportMainTemplatePlugin(this.name).apply(compilation);
|
144
|
+
break;
|
145
|
+
}
|
146
|
+
default:
|
147
|
+
throw new Error(`${this.target} is not a valid Library target`);
|
148
|
+
}
|
149
|
+
});
|
150
|
+
}
|
151
|
+
}
|
152
|
+
|
153
|
+
module.exports = LibraryTemplatePlugin;
|
@@ -1,53 +1,53 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
|
8
|
-
|
9
|
-
const validateOptions = require("schema-utils");
|
10
|
-
const schema = require("../schemas/plugins/LoaderOptionsPlugin.json");
|
11
|
-
|
12
|
-
class LoaderOptionsPlugin {
|
13
|
-
constructor(options) {
|
14
|
-
validateOptions(schema, options || {}, "Loader Options Plugin");
|
15
|
-
|
16
|
-
if (typeof options !== "object") options = {};
|
17
|
-
if (!options.test) {
|
18
|
-
options.test = {
|
19
|
-
test: () => true
|
20
|
-
};
|
21
|
-
}
|
22
|
-
this.options = options;
|
23
|
-
}
|
24
|
-
|
25
|
-
apply(compiler) {
|
26
|
-
const options = this.options;
|
27
|
-
compiler.hooks.compilation.tap("LoaderOptionsPlugin", compilation => {
|
28
|
-
compilation.hooks.normalModuleLoader.tap(
|
29
|
-
"LoaderOptionsPlugin",
|
30
|
-
(context, module) => {
|
31
|
-
const resource = module.resource;
|
32
|
-
if (!resource) return;
|
33
|
-
const i = resource.indexOf("?");
|
34
|
-
if (
|
35
|
-
ModuleFilenameHelpers.matchObject(
|
36
|
-
options,
|
37
|
-
i < 0 ? resource : resource.substr(0, i)
|
38
|
-
)
|
39
|
-
) {
|
40
|
-
for (const key of Object.keys(options)) {
|
41
|
-
if (key === "include" || key === "exclude" || key === "test") {
|
42
|
-
continue;
|
43
|
-
}
|
44
|
-
context[key] = options[key];
|
45
|
-
}
|
46
|
-
}
|
47
|
-
}
|
48
|
-
);
|
49
|
-
});
|
50
|
-
}
|
51
|
-
}
|
52
|
-
|
53
|
-
module.exports = LoaderOptionsPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
|
8
|
+
|
9
|
+
const validateOptions = require("schema-utils");
|
10
|
+
const schema = require("../schemas/plugins/LoaderOptionsPlugin.json");
|
11
|
+
|
12
|
+
class LoaderOptionsPlugin {
|
13
|
+
constructor(options) {
|
14
|
+
validateOptions(schema, options || {}, "Loader Options Plugin");
|
15
|
+
|
16
|
+
if (typeof options !== "object") options = {};
|
17
|
+
if (!options.test) {
|
18
|
+
options.test = {
|
19
|
+
test: () => true
|
20
|
+
};
|
21
|
+
}
|
22
|
+
this.options = options;
|
23
|
+
}
|
24
|
+
|
25
|
+
apply(compiler) {
|
26
|
+
const options = this.options;
|
27
|
+
compiler.hooks.compilation.tap("LoaderOptionsPlugin", compilation => {
|
28
|
+
compilation.hooks.normalModuleLoader.tap(
|
29
|
+
"LoaderOptionsPlugin",
|
30
|
+
(context, module) => {
|
31
|
+
const resource = module.resource;
|
32
|
+
if (!resource) return;
|
33
|
+
const i = resource.indexOf("?");
|
34
|
+
if (
|
35
|
+
ModuleFilenameHelpers.matchObject(
|
36
|
+
options,
|
37
|
+
i < 0 ? resource : resource.substr(0, i)
|
38
|
+
)
|
39
|
+
) {
|
40
|
+
for (const key of Object.keys(options)) {
|
41
|
+
if (key === "include" || key === "exclude" || key === "test") {
|
42
|
+
continue;
|
43
|
+
}
|
44
|
+
context[key] = options[key];
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
);
|
49
|
+
});
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
module.exports = LoaderOptionsPlugin;
|
@@ -1,24 +1,24 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
class LoaderTargetPlugin {
|
8
|
-
constructor(target) {
|
9
|
-
this.target = target;
|
10
|
-
}
|
11
|
-
|
12
|
-
apply(compiler) {
|
13
|
-
compiler.hooks.compilation.tap("LoaderTargetPlugin", compilation => {
|
14
|
-
compilation.hooks.normalModuleLoader.tap(
|
15
|
-
"LoaderTargetPlugin",
|
16
|
-
loaderContext => {
|
17
|
-
loaderContext.target = this.target;
|
18
|
-
}
|
19
|
-
);
|
20
|
-
});
|
21
|
-
}
|
22
|
-
}
|
23
|
-
|
24
|
-
module.exports = LoaderTargetPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class LoaderTargetPlugin {
|
8
|
+
constructor(target) {
|
9
|
+
this.target = target;
|
10
|
+
}
|
11
|
+
|
12
|
+
apply(compiler) {
|
13
|
+
compiler.hooks.compilation.tap("LoaderTargetPlugin", compilation => {
|
14
|
+
compilation.hooks.normalModuleLoader.tap(
|
15
|
+
"LoaderTargetPlugin",
|
16
|
+
loaderContext => {
|
17
|
+
loaderContext.target = this.target;
|
18
|
+
}
|
19
|
+
);
|
20
|
+
});
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
module.exports = LoaderTargetPlugin;
|
@@ -1,5 +1,5 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
module.exports = require("memory-fs");
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
module.exports = require("memory-fs");
|