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/DllEntryPlugin.js
CHANGED
@@ -1,51 +1,51 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const DllEntryDependency = require("./dependencies/DllEntryDependency");
|
8
|
-
const SingleEntryDependency = require("./dependencies/SingleEntryDependency");
|
9
|
-
const DllModuleFactory = require("./DllModuleFactory");
|
10
|
-
|
11
|
-
class DllEntryPlugin {
|
12
|
-
constructor(context, entries, name) {
|
13
|
-
this.context = context;
|
14
|
-
this.entries = entries;
|
15
|
-
this.name = name;
|
16
|
-
}
|
17
|
-
|
18
|
-
apply(compiler) {
|
19
|
-
compiler.hooks.compilation.tap(
|
20
|
-
"DllEntryPlugin",
|
21
|
-
(compilation, { normalModuleFactory }) => {
|
22
|
-
const dllModuleFactory = new DllModuleFactory();
|
23
|
-
compilation.dependencyFactories.set(
|
24
|
-
DllEntryDependency,
|
25
|
-
dllModuleFactory
|
26
|
-
);
|
27
|
-
compilation.dependencyFactories.set(
|
28
|
-
SingleEntryDependency,
|
29
|
-
normalModuleFactory
|
30
|
-
);
|
31
|
-
}
|
32
|
-
);
|
33
|
-
compiler.hooks.make.tapAsync("DllEntryPlugin", (compilation, callback) => {
|
34
|
-
compilation.addEntry(
|
35
|
-
this.context,
|
36
|
-
new DllEntryDependency(
|
37
|
-
this.entries.map((e, idx) => {
|
38
|
-
const dep = new SingleEntryDependency(e);
|
39
|
-
dep.loc = `${this.name}:${idx}`;
|
40
|
-
return dep;
|
41
|
-
}),
|
42
|
-
this.name
|
43
|
-
),
|
44
|
-
this.name,
|
45
|
-
callback
|
46
|
-
);
|
47
|
-
});
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
module.exports = DllEntryPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const DllEntryDependency = require("./dependencies/DllEntryDependency");
|
8
|
+
const SingleEntryDependency = require("./dependencies/SingleEntryDependency");
|
9
|
+
const DllModuleFactory = require("./DllModuleFactory");
|
10
|
+
|
11
|
+
class DllEntryPlugin {
|
12
|
+
constructor(context, entries, name) {
|
13
|
+
this.context = context;
|
14
|
+
this.entries = entries;
|
15
|
+
this.name = name;
|
16
|
+
}
|
17
|
+
|
18
|
+
apply(compiler) {
|
19
|
+
compiler.hooks.compilation.tap(
|
20
|
+
"DllEntryPlugin",
|
21
|
+
(compilation, { normalModuleFactory }) => {
|
22
|
+
const dllModuleFactory = new DllModuleFactory();
|
23
|
+
compilation.dependencyFactories.set(
|
24
|
+
DllEntryDependency,
|
25
|
+
dllModuleFactory
|
26
|
+
);
|
27
|
+
compilation.dependencyFactories.set(
|
28
|
+
SingleEntryDependency,
|
29
|
+
normalModuleFactory
|
30
|
+
);
|
31
|
+
}
|
32
|
+
);
|
33
|
+
compiler.hooks.make.tapAsync("DllEntryPlugin", (compilation, callback) => {
|
34
|
+
compilation.addEntry(
|
35
|
+
this.context,
|
36
|
+
new DllEntryDependency(
|
37
|
+
this.entries.map((e, idx) => {
|
38
|
+
const dep = new SingleEntryDependency(e);
|
39
|
+
dep.loc = `${this.name}:${idx}`;
|
40
|
+
return dep;
|
41
|
+
}),
|
42
|
+
this.name
|
43
|
+
),
|
44
|
+
this.name,
|
45
|
+
callback
|
46
|
+
);
|
47
|
+
});
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
module.exports = DllEntryPlugin;
|
package/lib/DllModule.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 { RawSource } = require("webpack-sources");
|
8
|
-
const Module = require("./Module");
|
9
|
-
|
10
|
-
class DllModule extends Module {
|
11
|
-
constructor(context, dependencies, name, type) {
|
12
|
-
super("javascript/dynamic", context);
|
13
|
-
|
14
|
-
// Info from Factory
|
15
|
-
this.dependencies = dependencies;
|
16
|
-
this.name = name;
|
17
|
-
this.type = type;
|
18
|
-
}
|
19
|
-
|
20
|
-
identifier() {
|
21
|
-
return `dll ${this.name}`;
|
22
|
-
}
|
23
|
-
|
24
|
-
readableIdentifier() {
|
25
|
-
return `dll ${this.name}`;
|
26
|
-
}
|
27
|
-
|
28
|
-
build(options, compilation, resolver, fs, callback) {
|
29
|
-
this.built = true;
|
30
|
-
this.buildMeta = {};
|
31
|
-
this.buildInfo = {};
|
32
|
-
return callback();
|
33
|
-
}
|
34
|
-
|
35
|
-
source() {
|
36
|
-
return new RawSource("module.exports = __webpack_require__;");
|
37
|
-
}
|
38
|
-
|
39
|
-
needRebuild() {
|
40
|
-
return false;
|
41
|
-
}
|
42
|
-
|
43
|
-
size() {
|
44
|
-
return 12;
|
45
|
-
}
|
46
|
-
|
47
|
-
updateHash(hash) {
|
48
|
-
hash.update("dll module");
|
49
|
-
hash.update(this.name || "");
|
50
|
-
super.updateHash(hash);
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
module.exports = DllModule;
|
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 Module = require("./Module");
|
9
|
+
|
10
|
+
class DllModule extends Module {
|
11
|
+
constructor(context, dependencies, name, type) {
|
12
|
+
super("javascript/dynamic", context);
|
13
|
+
|
14
|
+
// Info from Factory
|
15
|
+
this.dependencies = dependencies;
|
16
|
+
this.name = name;
|
17
|
+
this.type = type;
|
18
|
+
}
|
19
|
+
|
20
|
+
identifier() {
|
21
|
+
return `dll ${this.name}`;
|
22
|
+
}
|
23
|
+
|
24
|
+
readableIdentifier() {
|
25
|
+
return `dll ${this.name}`;
|
26
|
+
}
|
27
|
+
|
28
|
+
build(options, compilation, resolver, fs, callback) {
|
29
|
+
this.built = true;
|
30
|
+
this.buildMeta = {};
|
31
|
+
this.buildInfo = {};
|
32
|
+
return callback();
|
33
|
+
}
|
34
|
+
|
35
|
+
source() {
|
36
|
+
return new RawSource("module.exports = __webpack_require__;");
|
37
|
+
}
|
38
|
+
|
39
|
+
needRebuild() {
|
40
|
+
return false;
|
41
|
+
}
|
42
|
+
|
43
|
+
size() {
|
44
|
+
return 12;
|
45
|
+
}
|
46
|
+
|
47
|
+
updateHash(hash) {
|
48
|
+
hash.update("dll module");
|
49
|
+
hash.update(this.name || "");
|
50
|
+
super.updateHash(hash);
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
module.exports = DllModule;
|
package/lib/DllModuleFactory.js
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const { Tapable } = require("tapable");
|
8
|
-
const DllModule = require("./DllModule");
|
9
|
-
|
10
|
-
class DllModuleFactory extends Tapable {
|
11
|
-
constructor() {
|
12
|
-
super();
|
13
|
-
this.hooks = {};
|
14
|
-
}
|
15
|
-
create(data, callback) {
|
16
|
-
const dependency = data.dependencies[0];
|
17
|
-
callback(
|
18
|
-
null,
|
19
|
-
new DllModule(
|
20
|
-
data.context,
|
21
|
-
dependency.dependencies,
|
22
|
-
dependency.name,
|
23
|
-
dependency.type
|
24
|
-
)
|
25
|
-
);
|
26
|
-
}
|
27
|
-
}
|
28
|
-
|
29
|
-
module.exports = DllModuleFactory;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const { Tapable } = require("tapable");
|
8
|
+
const DllModule = require("./DllModule");
|
9
|
+
|
10
|
+
class DllModuleFactory extends Tapable {
|
11
|
+
constructor() {
|
12
|
+
super();
|
13
|
+
this.hooks = {};
|
14
|
+
}
|
15
|
+
create(data, callback) {
|
16
|
+
const dependency = data.dependencies[0];
|
17
|
+
callback(
|
18
|
+
null,
|
19
|
+
new DllModule(
|
20
|
+
data.context,
|
21
|
+
dependency.dependencies,
|
22
|
+
dependency.name,
|
23
|
+
dependency.type
|
24
|
+
)
|
25
|
+
);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
module.exports = DllModuleFactory;
|
package/lib/DllPlugin.js
CHANGED
@@ -1,42 +1,44 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const DllEntryPlugin = require("./DllEntryPlugin");
|
8
|
-
const LibManifestPlugin = require("./LibManifestPlugin");
|
9
|
-
const FlagInitialModulesAsUsedPlugin = require("./FlagInitialModulesAsUsedPlugin");
|
10
|
-
|
11
|
-
const validateOptions = require("schema-utils");
|
12
|
-
const schema = require("../schemas/plugins/DllPlugin.json");
|
13
|
-
|
14
|
-
class DllPlugin {
|
15
|
-
constructor(options) {
|
16
|
-
validateOptions(schema, options, "Dll Plugin");
|
17
|
-
this.options = options;
|
18
|
-
}
|
19
|
-
|
20
|
-
apply(compiler) {
|
21
|
-
compiler.hooks.entryOption.tap("DllPlugin", (context, entry) => {
|
22
|
-
const itemToPlugin = (item, name) => {
|
23
|
-
if (Array.isArray(item))
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
}
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
}
|
41
|
-
|
42
|
-
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const DllEntryPlugin = require("./DllEntryPlugin");
|
8
|
+
const LibManifestPlugin = require("./LibManifestPlugin");
|
9
|
+
const FlagInitialModulesAsUsedPlugin = require("./FlagInitialModulesAsUsedPlugin");
|
10
|
+
|
11
|
+
const validateOptions = require("schema-utils");
|
12
|
+
const schema = require("../schemas/plugins/DllPlugin.json");
|
13
|
+
|
14
|
+
class DllPlugin {
|
15
|
+
constructor(options) {
|
16
|
+
validateOptions(schema, options, "Dll Plugin");
|
17
|
+
this.options = options;
|
18
|
+
}
|
19
|
+
|
20
|
+
apply(compiler) {
|
21
|
+
compiler.hooks.entryOption.tap("DllPlugin", (context, entry) => {
|
22
|
+
const itemToPlugin = (item, name) => {
|
23
|
+
if (Array.isArray(item)) {
|
24
|
+
return new DllEntryPlugin(context, item, name);
|
25
|
+
}
|
26
|
+
throw new Error("DllPlugin: supply an Array as entry");
|
27
|
+
};
|
28
|
+
if (typeof entry === "object" && !Array.isArray(entry)) {
|
29
|
+
Object.keys(entry).forEach(name => {
|
30
|
+
itemToPlugin(entry[name], name).apply(compiler);
|
31
|
+
});
|
32
|
+
} else {
|
33
|
+
itemToPlugin(entry, "main").apply(compiler);
|
34
|
+
}
|
35
|
+
return true;
|
36
|
+
});
|
37
|
+
new LibManifestPlugin(this.options).apply(compiler);
|
38
|
+
if (!this.options.entryOnly) {
|
39
|
+
new FlagInitialModulesAsUsedPlugin("DllPlugin").apply(compiler);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
module.exports = DllPlugin;
|
@@ -1,84 +1,84 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const parseJson = require("json-parse-better-errors");
|
8
|
-
const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");
|
9
|
-
const DelegatedModuleFactoryPlugin = require("./DelegatedModuleFactoryPlugin");
|
10
|
-
const ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
|
11
|
-
const DelegatedExportsDependency = require("./dependencies/DelegatedExportsDependency");
|
12
|
-
const NullFactory = require("./NullFactory");
|
13
|
-
|
14
|
-
const validateOptions = require("schema-utils");
|
15
|
-
const schema = require("../schemas/plugins/DllReferencePlugin.json");
|
16
|
-
|
17
|
-
class DllReferencePlugin {
|
18
|
-
constructor(options) {
|
19
|
-
validateOptions(schema, options, "Dll Reference Plugin");
|
20
|
-
this.options = options;
|
21
|
-
}
|
22
|
-
|
23
|
-
apply(compiler) {
|
24
|
-
compiler.hooks.compilation.tap(
|
25
|
-
"DllReferencePlugin",
|
26
|
-
(compilation, { normalModuleFactory }) => {
|
27
|
-
compilation.dependencyFactories.set(
|
28
|
-
DelegatedSourceDependency,
|
29
|
-
normalModuleFactory
|
30
|
-
);
|
31
|
-
compilation.dependencyFactories.set(
|
32
|
-
DelegatedExportsDependency,
|
33
|
-
new NullFactory()
|
34
|
-
);
|
35
|
-
}
|
36
|
-
);
|
37
|
-
|
38
|
-
compiler.hooks.beforeCompile.tapAsync(
|
39
|
-
"DllReferencePlugin",
|
40
|
-
(params, callback) => {
|
41
|
-
const manifest = this.options.manifest;
|
42
|
-
if (typeof manifest === "string") {
|
43
|
-
params.compilationDependencies.add(manifest);
|
44
|
-
compiler.inputFileSystem.readFile(manifest, (err, result) => {
|
45
|
-
if (err) return callback(err);
|
46
|
-
params["dll reference " + manifest] = parseJson(
|
47
|
-
result.toString("utf-8")
|
48
|
-
);
|
49
|
-
return callback();
|
50
|
-
});
|
51
|
-
} else {
|
52
|
-
return callback();
|
53
|
-
}
|
54
|
-
}
|
55
|
-
);
|
56
|
-
|
57
|
-
compiler.hooks.compile.tap("DllReferencePlugin", params => {
|
58
|
-
let manifest = this.options.manifest;
|
59
|
-
if (typeof manifest === "string") {
|
60
|
-
manifest = params["dll reference " + manifest];
|
61
|
-
}
|
62
|
-
const name = this.options.name || manifest.name;
|
63
|
-
const sourceType =
|
64
|
-
this.options.sourceType || (manifest && manifest.type) || "var";
|
65
|
-
const externals = {};
|
66
|
-
const source = "dll-reference " + name;
|
67
|
-
externals[source] = name;
|
68
|
-
const normalModuleFactory = params.normalModuleFactory;
|
69
|
-
new ExternalModuleFactoryPlugin(sourceType, externals).apply(
|
70
|
-
normalModuleFactory
|
71
|
-
);
|
72
|
-
new DelegatedModuleFactoryPlugin({
|
73
|
-
source: source,
|
74
|
-
type: this.options.type,
|
75
|
-
scope: this.options.scope,
|
76
|
-
context: this.options.context || compiler.options.context,
|
77
|
-
content: this.options.content || manifest.content,
|
78
|
-
extensions: this.options.extensions
|
79
|
-
}).apply(normalModuleFactory);
|
80
|
-
});
|
81
|
-
}
|
82
|
-
}
|
83
|
-
|
84
|
-
module.exports = DllReferencePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const parseJson = require("json-parse-better-errors");
|
8
|
+
const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");
|
9
|
+
const DelegatedModuleFactoryPlugin = require("./DelegatedModuleFactoryPlugin");
|
10
|
+
const ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
|
11
|
+
const DelegatedExportsDependency = require("./dependencies/DelegatedExportsDependency");
|
12
|
+
const NullFactory = require("./NullFactory");
|
13
|
+
|
14
|
+
const validateOptions = require("schema-utils");
|
15
|
+
const schema = require("../schemas/plugins/DllReferencePlugin.json");
|
16
|
+
|
17
|
+
class DllReferencePlugin {
|
18
|
+
constructor(options) {
|
19
|
+
validateOptions(schema, options, "Dll Reference Plugin");
|
20
|
+
this.options = options;
|
21
|
+
}
|
22
|
+
|
23
|
+
apply(compiler) {
|
24
|
+
compiler.hooks.compilation.tap(
|
25
|
+
"DllReferencePlugin",
|
26
|
+
(compilation, { normalModuleFactory }) => {
|
27
|
+
compilation.dependencyFactories.set(
|
28
|
+
DelegatedSourceDependency,
|
29
|
+
normalModuleFactory
|
30
|
+
);
|
31
|
+
compilation.dependencyFactories.set(
|
32
|
+
DelegatedExportsDependency,
|
33
|
+
new NullFactory()
|
34
|
+
);
|
35
|
+
}
|
36
|
+
);
|
37
|
+
|
38
|
+
compiler.hooks.beforeCompile.tapAsync(
|
39
|
+
"DllReferencePlugin",
|
40
|
+
(params, callback) => {
|
41
|
+
const manifest = this.options.manifest;
|
42
|
+
if (typeof manifest === "string") {
|
43
|
+
params.compilationDependencies.add(manifest);
|
44
|
+
compiler.inputFileSystem.readFile(manifest, (err, result) => {
|
45
|
+
if (err) return callback(err);
|
46
|
+
params["dll reference " + manifest] = parseJson(
|
47
|
+
result.toString("utf-8")
|
48
|
+
);
|
49
|
+
return callback();
|
50
|
+
});
|
51
|
+
} else {
|
52
|
+
return callback();
|
53
|
+
}
|
54
|
+
}
|
55
|
+
);
|
56
|
+
|
57
|
+
compiler.hooks.compile.tap("DllReferencePlugin", params => {
|
58
|
+
let manifest = this.options.manifest;
|
59
|
+
if (typeof manifest === "string") {
|
60
|
+
manifest = params["dll reference " + manifest];
|
61
|
+
}
|
62
|
+
const name = this.options.name || manifest.name;
|
63
|
+
const sourceType =
|
64
|
+
this.options.sourceType || (manifest && manifest.type) || "var";
|
65
|
+
const externals = {};
|
66
|
+
const source = "dll-reference " + name;
|
67
|
+
externals[source] = name;
|
68
|
+
const normalModuleFactory = params.normalModuleFactory;
|
69
|
+
new ExternalModuleFactoryPlugin(sourceType, externals).apply(
|
70
|
+
normalModuleFactory
|
71
|
+
);
|
72
|
+
new DelegatedModuleFactoryPlugin({
|
73
|
+
source: source,
|
74
|
+
type: this.options.type,
|
75
|
+
scope: this.options.scope,
|
76
|
+
context: this.options.context || compiler.options.context,
|
77
|
+
content: this.options.content || manifest.content,
|
78
|
+
extensions: this.options.extensions
|
79
|
+
}).apply(normalModuleFactory);
|
80
|
+
});
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
module.exports = DllReferencePlugin;
|
@@ -1,71 +1,73 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Naoyuki Kanezawa @nkzawa
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const MultiEntryDependency = require("./dependencies/MultiEntryDependency");
|
8
|
-
const SingleEntryDependency = require("./dependencies/SingleEntryDependency");
|
9
|
-
const MultiModuleFactory = require("./MultiModuleFactory");
|
10
|
-
const MultiEntryPlugin = require("./MultiEntryPlugin");
|
11
|
-
const SingleEntryPlugin = require("./SingleEntryPlugin");
|
12
|
-
|
13
|
-
class DynamicEntryPlugin {
|
14
|
-
constructor(context, entry) {
|
15
|
-
this.context = context;
|
16
|
-
this.entry = entry;
|
17
|
-
}
|
18
|
-
|
19
|
-
apply(compiler) {
|
20
|
-
compiler.hooks.compilation.tap(
|
21
|
-
"DynamicEntryPlugin",
|
22
|
-
(compilation, { normalModuleFactory }) => {
|
23
|
-
const multiModuleFactory = new MultiModuleFactory();
|
24
|
-
|
25
|
-
compilation.dependencyFactories.set(
|
26
|
-
MultiEntryDependency,
|
27
|
-
multiModuleFactory
|
28
|
-
);
|
29
|
-
compilation.dependencyFactories.set(
|
30
|
-
SingleEntryDependency,
|
31
|
-
normalModuleFactory
|
32
|
-
);
|
33
|
-
}
|
34
|
-
);
|
35
|
-
|
36
|
-
compiler.hooks.make.tapAsync(
|
37
|
-
"DynamicEntryPlugin",
|
38
|
-
(compilation, callback) => {
|
39
|
-
const addEntry = (entry, name) => {
|
40
|
-
const dep = DynamicEntryPlugin.createDependency(entry, name);
|
41
|
-
return new Promise((resolve, reject) => {
|
42
|
-
compilation.addEntry(this.context, dep, name, err => {
|
43
|
-
if (err) return reject(err);
|
44
|
-
resolve();
|
45
|
-
});
|
46
|
-
});
|
47
|
-
};
|
48
|
-
|
49
|
-
Promise.resolve(this.entry()).then(entry => {
|
50
|
-
if (typeof entry === "string" || Array.isArray(entry)) {
|
51
|
-
addEntry(entry, "main").then(() => callback(), callback);
|
52
|
-
} else if (typeof entry === "object") {
|
53
|
-
Promise.all(
|
54
|
-
Object.keys(entry).map(name => {
|
55
|
-
return addEntry(entry[name], name);
|
56
|
-
})
|
57
|
-
).then(() => callback(), callback);
|
58
|
-
}
|
59
|
-
});
|
60
|
-
}
|
61
|
-
);
|
62
|
-
}
|
63
|
-
}
|
64
|
-
|
65
|
-
module.exports = DynamicEntryPlugin;
|
66
|
-
|
67
|
-
DynamicEntryPlugin.createDependency = (entry, name) => {
|
68
|
-
if (Array.isArray(entry))
|
69
|
-
return MultiEntryPlugin.createDependency(entry, name);
|
70
|
-
else
|
71
|
-
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Naoyuki Kanezawa @nkzawa
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const MultiEntryDependency = require("./dependencies/MultiEntryDependency");
|
8
|
+
const SingleEntryDependency = require("./dependencies/SingleEntryDependency");
|
9
|
+
const MultiModuleFactory = require("./MultiModuleFactory");
|
10
|
+
const MultiEntryPlugin = require("./MultiEntryPlugin");
|
11
|
+
const SingleEntryPlugin = require("./SingleEntryPlugin");
|
12
|
+
|
13
|
+
class DynamicEntryPlugin {
|
14
|
+
constructor(context, entry) {
|
15
|
+
this.context = context;
|
16
|
+
this.entry = entry;
|
17
|
+
}
|
18
|
+
|
19
|
+
apply(compiler) {
|
20
|
+
compiler.hooks.compilation.tap(
|
21
|
+
"DynamicEntryPlugin",
|
22
|
+
(compilation, { normalModuleFactory }) => {
|
23
|
+
const multiModuleFactory = new MultiModuleFactory();
|
24
|
+
|
25
|
+
compilation.dependencyFactories.set(
|
26
|
+
MultiEntryDependency,
|
27
|
+
multiModuleFactory
|
28
|
+
);
|
29
|
+
compilation.dependencyFactories.set(
|
30
|
+
SingleEntryDependency,
|
31
|
+
normalModuleFactory
|
32
|
+
);
|
33
|
+
}
|
34
|
+
);
|
35
|
+
|
36
|
+
compiler.hooks.make.tapAsync(
|
37
|
+
"DynamicEntryPlugin",
|
38
|
+
(compilation, callback) => {
|
39
|
+
const addEntry = (entry, name) => {
|
40
|
+
const dep = DynamicEntryPlugin.createDependency(entry, name);
|
41
|
+
return new Promise((resolve, reject) => {
|
42
|
+
compilation.addEntry(this.context, dep, name, err => {
|
43
|
+
if (err) return reject(err);
|
44
|
+
resolve();
|
45
|
+
});
|
46
|
+
});
|
47
|
+
};
|
48
|
+
|
49
|
+
Promise.resolve(this.entry()).then(entry => {
|
50
|
+
if (typeof entry === "string" || Array.isArray(entry)) {
|
51
|
+
addEntry(entry, "main").then(() => callback(), callback);
|
52
|
+
} else if (typeof entry === "object") {
|
53
|
+
Promise.all(
|
54
|
+
Object.keys(entry).map(name => {
|
55
|
+
return addEntry(entry[name], name);
|
56
|
+
})
|
57
|
+
).then(() => callback(), callback);
|
58
|
+
}
|
59
|
+
});
|
60
|
+
}
|
61
|
+
);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
module.exports = DynamicEntryPlugin;
|
66
|
+
|
67
|
+
DynamicEntryPlugin.createDependency = (entry, name) => {
|
68
|
+
if (Array.isArray(entry)) {
|
69
|
+
return MultiEntryPlugin.createDependency(entry, name);
|
70
|
+
} else {
|
71
|
+
return SingleEntryPlugin.createDependency(entry, name);
|
72
|
+
}
|
73
|
+
};
|