webpack 3.6.0 → 3.8.1
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 +716 -716
- package/bin/convert-argv.js +1 -1
- package/bin/webpack.js +6 -0
- package/buildin/.eslintrc +7 -7
- package/buildin/amd-define.js +3 -3
- package/buildin/amd-options.js +2 -2
- package/buildin/global.js +21 -21
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/buildin/system.js +7 -7
- package/hot/.eslintrc +9 -9
- package/hot/dev-server.js +53 -53
- package/hot/emitter.js +2 -2
- package/hot/log-apply-result.js +38 -38
- package/hot/log.js +44 -44
- package/hot/only-dev-server.js +71 -71
- package/hot/poll.js +34 -34
- package/hot/signal.js +51 -51
- package/lib/APIPlugin.js +45 -45
- package/lib/AsyncDependenciesBlock.js +43 -43
- package/lib/AsyncDependencyToInitialChunkWarning.js +21 -0
- package/lib/AutomaticPrefetchPlugin.js +36 -36
- package/lib/BasicEvaluatedExpression.js +203 -203
- package/lib/CaseSensitiveModulesWarning.js +49 -49
- package/lib/Chunk.js +3 -0
- package/lib/ChunkRenderError.js +24 -24
- package/lib/ChunkTemplate.js +36 -36
- package/lib/CompatibilityPlugin.js +57 -57
- package/lib/Compilation.js +158 -51
- package/lib/Compiler.js +523 -523
- package/lib/ConstPlugin.js +60 -60
- package/lib/ContextExclusionPlugin.js +17 -0
- package/lib/ContextModule.js +431 -431
- package/lib/ContextModuleFactory.js +14 -5
- package/lib/ContextReplacementPlugin.js +111 -111
- package/lib/DefinePlugin.js +123 -123
- package/lib/DelegatedModule.js +98 -92
- package/lib/DelegatedModuleFactoryPlugin.js +59 -59
- package/lib/DelegatedPlugin.js +30 -30
- package/lib/DependenciesBlockVariable.js +51 -51
- package/lib/DllEntryPlugin.js +37 -37
- package/lib/DllModule.js +58 -58
- package/lib/DllModuleFactory.js +20 -20
- package/lib/DllPlugin.js +38 -38
- package/lib/DllReferencePlugin.js +62 -62
- package/lib/DynamicEntryPlugin.js +59 -59
- package/lib/EntryModuleNotFoundError.js +22 -22
- package/lib/EntryOptionPlugin.js +31 -31
- package/lib/EnvironmentPlugin.js +50 -50
- package/lib/ErrorHelpers.js +31 -31
- package/lib/EvalDevToolModulePlugin.js +22 -22
- package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
- package/lib/EvalSourceMapDevToolPlugin.js +32 -32
- package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
- package/lib/ExtendedAPIPlugin.js +47 -47
- package/lib/ExternalModule.js +7 -0
- package/lib/ExternalModuleFactoryPlugin.js +91 -91
- package/lib/ExternalsPlugin.js +21 -21
- package/lib/FlagDependencyExportsPlugin.js +101 -101
- package/lib/FunctionModulePlugin.js +24 -24
- package/lib/FunctionModuleTemplatePlugin.js +7 -3
- package/lib/HashedModuleIdsPlugin.js +42 -42
- package/lib/HotUpdateChunkTemplate.js +31 -31
- package/lib/IgnorePlugin.js +69 -69
- package/lib/JsonpExportMainTemplatePlugin.js +37 -37
- package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/JsonpMainTemplate.runtime.js +2 -1
- package/lib/JsonpMainTemplatePlugin.js +2 -0
- package/lib/JsonpTemplatePlugin.js +21 -21
- package/lib/LibManifestPlugin.js +63 -63
- package/lib/LibraryTemplatePlugin.js +92 -92
- package/lib/LoaderOptionsPlugin.js +36 -36
- package/lib/LoaderTargetPlugin.js +19 -19
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleDependencyError.js +22 -22
- package/lib/ModuleDependencyWarning.js +22 -22
- package/lib/ModuleError.js +24 -24
- package/lib/ModuleFilenameHelpers.js +162 -162
- package/lib/ModuleNotFoundError.js +26 -26
- package/lib/ModuleParseError.js +1 -1
- package/lib/ModuleReason.js +50 -50
- package/lib/ModuleTemplate.js +23 -23
- package/lib/ModuleWarning.js +24 -24
- package/lib/MovedToPluginWarningPlugin.js +21 -21
- package/lib/MultiCompiler.js +164 -164
- package/lib/MultiEntryPlugin.js +39 -39
- package/lib/MultiModuleFactory.js +19 -19
- package/lib/MultiStats.js +79 -79
- package/lib/MultiWatching.js +32 -32
- package/lib/NamedChunksPlugin.js +30 -30
- package/lib/NamedModulesPlugin.js +27 -27
- package/lib/NewWatchingPlugin.js +15 -15
- package/lib/NoEmitOnErrorsPlugin.js +22 -22
- package/lib/NoErrorsPlugin.js +29 -29
- package/lib/NodeStuffPlugin.js +97 -97
- package/lib/NormalModuleReplacementPlugin.js +45 -45
- package/lib/NullFactory.js +12 -12
- package/lib/OptionsApply.js +10 -10
- package/lib/Parser.js +65 -34
- package/lib/ParserHelpers.js +85 -85
- package/lib/PrefetchPlugin.js +31 -31
- package/lib/ProgressPlugin.js +192 -192
- package/lib/ProvidePlugin.js +55 -55
- package/lib/RawModule.js +54 -54
- package/lib/RequestShortener.js +63 -63
- package/lib/RequireJsStuffPlugin.js +31 -31
- package/lib/RuleSet.js +444 -444
- package/lib/SetVarMainTemplatePlugin.js +41 -41
- package/lib/SingleEntryPlugin.js +35 -35
- package/lib/SizeFormatHelpers.js +18 -18
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
- package/lib/Stats.js +27 -8
- package/lib/UmdMainTemplatePlugin.js +1 -1
- package/lib/UnsupportedFeatureWarning.js +21 -21
- package/lib/UseStrictPlugin.js +34 -34
- package/lib/WarnCaseSensitiveModulesPlugin.js +31 -31
- package/lib/WatchIgnorePlugin.js +49 -49
- package/lib/WebpackError.js +11 -11
- package/lib/WebpackOptionsDefaulter.js +129 -129
- package/lib/WebpackOptionsValidationError.js +196 -196
- package/lib/compareLocations.js +36 -36
- package/lib/dependencies/AMDDefineDependency.js +142 -142
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +5 -1
- package/lib/dependencies/AMDPlugin.js +119 -119
- package/lib/dependencies/AMDRequireArrayDependency.js +2 -0
- package/lib/dependencies/AMDRequireContextDependency.js +0 -9
- package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
- package/lib/dependencies/AMDRequireDependency.js +67 -67
- package/lib/dependencies/AMDRequireItemDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireContextDependency.js +0 -10
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
- package/lib/dependencies/ConstDependency.js +32 -32
- package/lib/dependencies/ContextDependency.js +20 -0
- package/lib/dependencies/ContextDependencyHelpers.js +71 -71
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/CriticalDependencyWarning.js +20 -20
- package/lib/dependencies/DelegatedExportsDependency.js +33 -33
- package/lib/dependencies/DelegatedSourceDependency.js +18 -18
- package/lib/dependencies/DllEntryDependency.js +20 -20
- package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +14 -2
- package/lib/dependencies/HarmonyExportExpressionDependency.js +0 -7
- package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +45 -45
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +0 -13
- package/lib/dependencies/HarmonyModulesHelpers.js +0 -53
- package/lib/dependencies/ImportContextDependency.js +0 -10
- package/lib/dependencies/ImportDependenciesBlock.js +17 -17
- package/lib/dependencies/ImportEagerContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
- package/lib/dependencies/ImportParserPlugin.js +89 -89
- package/lib/dependencies/ImportPlugin.js +60 -60
- package/lib/dependencies/ImportWeakContextDependency.js +22 -22
- package/lib/dependencies/LoaderDependency.js +18 -18
- package/lib/dependencies/LoaderPlugin.js +60 -60
- package/lib/dependencies/LocalModule.js +23 -23
- package/lib/dependencies/LocalModuleDependency.js +24 -24
- package/lib/dependencies/LocalModulesHelpers.js +46 -46
- package/lib/dependencies/ModuleDependency.js +23 -23
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
- package/lib/dependencies/MultiEntryDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +24 -24
- package/lib/dependencies/PrefetchDependency.js +18 -18
- package/lib/dependencies/RequireContextDependency.js +26 -26
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
- package/lib/dependencies/RequireContextPlugin.js +96 -96
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
- package/lib/dependencies/RequireEnsureDependency.js +38 -38
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
- package/lib/dependencies/RequireEnsurePlugin.js +40 -40
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
- package/lib/dependencies/RequireIncludePlugin.js +33 -33
- package/lib/dependencies/RequireResolveContextDependency.js +0 -10
- package/lib/dependencies/RequireResolveDependency.js +22 -22
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SingleEntryDependency.js +18 -18
- package/lib/dependencies/SystemPlugin.js +44 -44
- package/lib/dependencies/UnsupportedDependency.js +23 -23
- package/lib/dependencies/WebpackMissingModule.js +18 -18
- package/lib/dependencies/getFunctionExpression.js +44 -44
- package/lib/formatLocation.js +54 -54
- package/lib/node/NodeChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeEnvironmentPlugin.js +25 -25
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeMainTemplate.runtime.js +24 -24
- package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
- package/lib/node/NodeOutputFileSystem.js +22 -22
- package/lib/node/NodeSourcePlugin.js +88 -88
- package/lib/node/NodeTargetPlugin.js +15 -15
- package/lib/node/NodeTemplatePlugin.js +27 -27
- package/lib/node/NodeWatchFileSystem.js +72 -72
- package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
- package/lib/optimize/CommonsChunkPlugin.js +40 -19
- package/lib/optimize/ConcatenatedModule.js +27 -24
- package/lib/optimize/DedupePlugin.js +15 -15
- package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
- package/lib/optimize/LimitChunkCountPlugin.js +59 -59
- package/lib/optimize/MinChunkSizePlugin.js +65 -65
- package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
- package/lib/optimize/UglifyJsPlugin.js +9 -9
- package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
- package/lib/performance/NoAsyncChunksWarning.js +20 -20
- package/lib/performance/SizeLimitsPlugin.js +102 -102
- package/lib/prepareOptions.js +29 -29
- package/lib/removeAndDo.js +15 -15
- package/lib/util/Queue.js +42 -0
- package/lib/util/Semaphore.js +32 -32
- package/lib/util/identifier.js +38 -38
- package/lib/validateSchema.js +66 -66
- package/lib/web/WebEnvironmentPlugin.js +18 -18
- package/lib/webpack.js +1 -0
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
- package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
- package/package.json +1 -1
- package/schemas/ajv.absolutePath.js +29 -29
- package/schemas/webpackOptionsSchema.json +69 -0
@@ -1,88 +1,88 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const AliasPlugin = require("enhanced-resolve/lib/AliasPlugin");
|
7
|
-
const ParserHelpers = require("../ParserHelpers");
|
8
|
-
const nodeLibsBrowser = require("node-libs-browser");
|
9
|
-
|
10
|
-
module.exports = class NodeSourcePlugin {
|
11
|
-
constructor(options) {
|
12
|
-
this.options = options;
|
13
|
-
}
|
14
|
-
apply(compiler) {
|
15
|
-
const options = this.options;
|
16
|
-
if(options === false) // allow single kill switch to turn off this plugin
|
17
|
-
return;
|
18
|
-
|
19
|
-
function getPathToModule(module, type) {
|
20
|
-
if(type === true || (type === undefined && nodeLibsBrowser[module])) {
|
21
|
-
if(!nodeLibsBrowser[module]) throw new Error(`No browser version for node.js core module ${module} available`);
|
22
|
-
return nodeLibsBrowser[module];
|
23
|
-
} else if(type === "mock") {
|
24
|
-
return require.resolve(`node-libs-browser/mock/${module}`);
|
25
|
-
} else if(type === "empty") {
|
26
|
-
return require.resolve("node-libs-browser/mock/empty");
|
27
|
-
} else return module;
|
28
|
-
}
|
29
|
-
|
30
|
-
function addExpression(parser, name, module, type, suffix) {
|
31
|
-
suffix = suffix || "";
|
32
|
-
parser.plugin(`expression ${name}`, function() {
|
33
|
-
if(this.state.module && this.state.module.resource === getPathToModule(module, type)) return;
|
34
|
-
const mockModule = ParserHelpers.requireFileAsExpression(this.state.module.context, getPathToModule(module, type));
|
35
|
-
return ParserHelpers.addParsedVariableToModule(this, name, mockModule + suffix);
|
36
|
-
});
|
37
|
-
}
|
38
|
-
|
39
|
-
compiler.plugin("compilation", function(compilation, params) {
|
40
|
-
params.normalModuleFactory.plugin("parser", function(parser, parserOptions) {
|
41
|
-
|
42
|
-
if(parserOptions.node === false)
|
43
|
-
return;
|
44
|
-
|
45
|
-
let localOptions = options;
|
46
|
-
if(parserOptions.node)
|
47
|
-
localOptions = Object.assign({}, localOptions, parserOptions.node);
|
48
|
-
|
49
|
-
if(localOptions.global) {
|
50
|
-
parser.plugin("expression global", function() {
|
51
|
-
const retrieveGlobalModule = ParserHelpers.requireFileAsExpression(this.state.module.context, require.resolve("../../buildin/global.js"));
|
52
|
-
return ParserHelpers.addParsedVariableToModule(this, "global", retrieveGlobalModule);
|
53
|
-
});
|
54
|
-
}
|
55
|
-
if(localOptions.process) {
|
56
|
-
const processType = localOptions.process;
|
57
|
-
addExpression(parser, "process", "process", processType);
|
58
|
-
}
|
59
|
-
if(localOptions.console) {
|
60
|
-
const consoleType = localOptions.console;
|
61
|
-
addExpression(parser, "console", "console", consoleType);
|
62
|
-
}
|
63
|
-
const bufferType = localOptions.Buffer;
|
64
|
-
if(bufferType) {
|
65
|
-
addExpression(parser, "Buffer", "buffer", bufferType, ".Buffer");
|
66
|
-
}
|
67
|
-
if(localOptions.setImmediate) {
|
68
|
-
const setImmediateType = localOptions.setImmediate;
|
69
|
-
addExpression(parser, "setImmediate", "timers", setImmediateType, ".setImmediate");
|
70
|
-
addExpression(parser, "clearImmediate", "timers", setImmediateType, ".clearImmediate");
|
71
|
-
}
|
72
|
-
});
|
73
|
-
});
|
74
|
-
compiler.plugin("after-resolvers", (compiler) => {
|
75
|
-
Object.keys(nodeLibsBrowser).forEach((lib) => {
|
76
|
-
if(options[lib] !== false) {
|
77
|
-
compiler.resolvers.normal.apply(
|
78
|
-
new AliasPlugin("described-resolve", {
|
79
|
-
name: lib,
|
80
|
-
onlyModule: true,
|
81
|
-
alias: getPathToModule(lib, options[lib])
|
82
|
-
}, "resolve")
|
83
|
-
);
|
84
|
-
}
|
85
|
-
});
|
86
|
-
});
|
87
|
-
}
|
88
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const AliasPlugin = require("enhanced-resolve/lib/AliasPlugin");
|
7
|
+
const ParserHelpers = require("../ParserHelpers");
|
8
|
+
const nodeLibsBrowser = require("node-libs-browser");
|
9
|
+
|
10
|
+
module.exports = class NodeSourcePlugin {
|
11
|
+
constructor(options) {
|
12
|
+
this.options = options;
|
13
|
+
}
|
14
|
+
apply(compiler) {
|
15
|
+
const options = this.options;
|
16
|
+
if(options === false) // allow single kill switch to turn off this plugin
|
17
|
+
return;
|
18
|
+
|
19
|
+
function getPathToModule(module, type) {
|
20
|
+
if(type === true || (type === undefined && nodeLibsBrowser[module])) {
|
21
|
+
if(!nodeLibsBrowser[module]) throw new Error(`No browser version for node.js core module ${module} available`);
|
22
|
+
return nodeLibsBrowser[module];
|
23
|
+
} else if(type === "mock") {
|
24
|
+
return require.resolve(`node-libs-browser/mock/${module}`);
|
25
|
+
} else if(type === "empty") {
|
26
|
+
return require.resolve("node-libs-browser/mock/empty");
|
27
|
+
} else return module;
|
28
|
+
}
|
29
|
+
|
30
|
+
function addExpression(parser, name, module, type, suffix) {
|
31
|
+
suffix = suffix || "";
|
32
|
+
parser.plugin(`expression ${name}`, function() {
|
33
|
+
if(this.state.module && this.state.module.resource === getPathToModule(module, type)) return;
|
34
|
+
const mockModule = ParserHelpers.requireFileAsExpression(this.state.module.context, getPathToModule(module, type));
|
35
|
+
return ParserHelpers.addParsedVariableToModule(this, name, mockModule + suffix);
|
36
|
+
});
|
37
|
+
}
|
38
|
+
|
39
|
+
compiler.plugin("compilation", function(compilation, params) {
|
40
|
+
params.normalModuleFactory.plugin("parser", function(parser, parserOptions) {
|
41
|
+
|
42
|
+
if(parserOptions.node === false)
|
43
|
+
return;
|
44
|
+
|
45
|
+
let localOptions = options;
|
46
|
+
if(parserOptions.node)
|
47
|
+
localOptions = Object.assign({}, localOptions, parserOptions.node);
|
48
|
+
|
49
|
+
if(localOptions.global) {
|
50
|
+
parser.plugin("expression global", function() {
|
51
|
+
const retrieveGlobalModule = ParserHelpers.requireFileAsExpression(this.state.module.context, require.resolve("../../buildin/global.js"));
|
52
|
+
return ParserHelpers.addParsedVariableToModule(this, "global", retrieveGlobalModule);
|
53
|
+
});
|
54
|
+
}
|
55
|
+
if(localOptions.process) {
|
56
|
+
const processType = localOptions.process;
|
57
|
+
addExpression(parser, "process", "process", processType);
|
58
|
+
}
|
59
|
+
if(localOptions.console) {
|
60
|
+
const consoleType = localOptions.console;
|
61
|
+
addExpression(parser, "console", "console", consoleType);
|
62
|
+
}
|
63
|
+
const bufferType = localOptions.Buffer;
|
64
|
+
if(bufferType) {
|
65
|
+
addExpression(parser, "Buffer", "buffer", bufferType, ".Buffer");
|
66
|
+
}
|
67
|
+
if(localOptions.setImmediate) {
|
68
|
+
const setImmediateType = localOptions.setImmediate;
|
69
|
+
addExpression(parser, "setImmediate", "timers", setImmediateType, ".setImmediate");
|
70
|
+
addExpression(parser, "clearImmediate", "timers", setImmediateType, ".clearImmediate");
|
71
|
+
}
|
72
|
+
});
|
73
|
+
});
|
74
|
+
compiler.plugin("after-resolvers", (compiler) => {
|
75
|
+
Object.keys(nodeLibsBrowser).forEach((lib) => {
|
76
|
+
if(options[lib] !== false) {
|
77
|
+
compiler.resolvers.normal.apply(
|
78
|
+
new AliasPlugin("described-resolve", {
|
79
|
+
name: lib,
|
80
|
+
onlyModule: true,
|
81
|
+
alias: getPathToModule(lib, options[lib])
|
82
|
+
}, "resolve")
|
83
|
+
);
|
84
|
+
}
|
85
|
+
});
|
86
|
+
});
|
87
|
+
}
|
88
|
+
};
|
@@ -1,15 +1,15 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const ExternalsPlugin = require("../ExternalsPlugin");
|
8
|
-
|
9
|
-
class NodeTargetPlugin {
|
10
|
-
apply(compiler) {
|
11
|
-
new ExternalsPlugin("commonjs", Object.keys(process.binding("natives"))).apply(compiler);
|
12
|
-
}
|
13
|
-
}
|
14
|
-
|
15
|
-
module.exports = NodeTargetPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const ExternalsPlugin = require("../ExternalsPlugin");
|
8
|
+
|
9
|
+
class NodeTargetPlugin {
|
10
|
+
apply(compiler) {
|
11
|
+
new ExternalsPlugin("commonjs", Object.keys(process.binding("natives"))).apply(compiler);
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
module.exports = NodeTargetPlugin;
|
@@ -1,27 +1,27 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
const NodeMainTemplatePlugin = require("./NodeMainTemplatePlugin");
|
9
|
-
const NodeChunkTemplatePlugin = require("./NodeChunkTemplatePlugin");
|
10
|
-
const NodeHotUpdateChunkTemplatePlugin = require("./NodeHotUpdateChunkTemplatePlugin");
|
11
|
-
|
12
|
-
class NodeTemplatePlugin {
|
13
|
-
constructor(options) {
|
14
|
-
options = options || {};
|
15
|
-
this.asyncChunkLoading = options.asyncChunkLoading;
|
16
|
-
}
|
17
|
-
|
18
|
-
apply(compiler) {
|
19
|
-
compiler.plugin("this-compilation", (compilation) => {
|
20
|
-
compilation.mainTemplate.apply(new NodeMainTemplatePlugin(this.asyncChunkLoading));
|
21
|
-
compilation.chunkTemplate.apply(new NodeChunkTemplatePlugin());
|
22
|
-
compilation.hotUpdateChunkTemplate.apply(new NodeHotUpdateChunkTemplatePlugin());
|
23
|
-
});
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
module.exports = NodeTemplatePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const NodeMainTemplatePlugin = require("./NodeMainTemplatePlugin");
|
9
|
+
const NodeChunkTemplatePlugin = require("./NodeChunkTemplatePlugin");
|
10
|
+
const NodeHotUpdateChunkTemplatePlugin = require("./NodeHotUpdateChunkTemplatePlugin");
|
11
|
+
|
12
|
+
class NodeTemplatePlugin {
|
13
|
+
constructor(options) {
|
14
|
+
options = options || {};
|
15
|
+
this.asyncChunkLoading = options.asyncChunkLoading;
|
16
|
+
}
|
17
|
+
|
18
|
+
apply(compiler) {
|
19
|
+
compiler.plugin("this-compilation", (compilation) => {
|
20
|
+
compilation.mainTemplate.apply(new NodeMainTemplatePlugin(this.asyncChunkLoading));
|
21
|
+
compilation.chunkTemplate.apply(new NodeChunkTemplatePlugin());
|
22
|
+
compilation.hotUpdateChunkTemplate.apply(new NodeHotUpdateChunkTemplatePlugin());
|
23
|
+
});
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
module.exports = NodeTemplatePlugin;
|
@@ -1,72 +1,72 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const Watchpack = require("watchpack");
|
8
|
-
|
9
|
-
class NodeWatchFileSystem {
|
10
|
-
constructor(inputFileSystem) {
|
11
|
-
this.inputFileSystem = inputFileSystem;
|
12
|
-
this.watcherOptions = {
|
13
|
-
aggregateTimeout: 0
|
14
|
-
};
|
15
|
-
this.watcher = new Watchpack(this.watcherOptions);
|
16
|
-
}
|
17
|
-
|
18
|
-
watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
|
19
|
-
if(!Array.isArray(files))
|
20
|
-
throw new Error("Invalid arguments: 'files'");
|
21
|
-
if(!Array.isArray(dirs))
|
22
|
-
throw new Error("Invalid arguments: 'dirs'");
|
23
|
-
if(!Array.isArray(missing))
|
24
|
-
throw new Error("Invalid arguments: 'missing'");
|
25
|
-
if(typeof callback !== "function")
|
26
|
-
throw new Error("Invalid arguments: 'callback'");
|
27
|
-
if(typeof startTime !== "number" && startTime)
|
28
|
-
throw new Error("Invalid arguments: 'startTime'");
|
29
|
-
if(typeof options !== "object")
|
30
|
-
throw new Error("Invalid arguments: 'options'");
|
31
|
-
if(typeof callbackUndelayed !== "function" && callbackUndelayed)
|
32
|
-
throw new Error("Invalid arguments: 'callbackUndelayed'");
|
33
|
-
const oldWatcher = this.watcher;
|
34
|
-
this.watcher = new Watchpack(options);
|
35
|
-
|
36
|
-
if(callbackUndelayed)
|
37
|
-
this.watcher.once("change", callbackUndelayed);
|
38
|
-
|
39
|
-
this.watcher.once("aggregated", (changes, removals) => {
|
40
|
-
changes = changes.concat(removals);
|
41
|
-
if(this.inputFileSystem && this.inputFileSystem.purge) {
|
42
|
-
this.inputFileSystem.purge(changes);
|
43
|
-
}
|
44
|
-
const times = this.watcher.getTimes();
|
45
|
-
callback(null,
|
46
|
-
changes.filter(file => files.indexOf(file) >= 0).sort(),
|
47
|
-
changes.filter(file => dirs.indexOf(file) >= 0).sort(),
|
48
|
-
changes.filter(file => missing.indexOf(file) >= 0).sort(), times, times);
|
49
|
-
});
|
50
|
-
|
51
|
-
this.watcher.watch(files.concat(missing), dirs.concat(missing), startTime);
|
52
|
-
|
53
|
-
if(oldWatcher) {
|
54
|
-
oldWatcher.close();
|
55
|
-
}
|
56
|
-
return {
|
57
|
-
close: () => {
|
58
|
-
if(this.watcher) {
|
59
|
-
this.watcher.close();
|
60
|
-
this.watcher = null;
|
61
|
-
}
|
62
|
-
},
|
63
|
-
pause: () => {
|
64
|
-
if(this.watcher) {
|
65
|
-
this.watcher.pause();
|
66
|
-
}
|
67
|
-
}
|
68
|
-
};
|
69
|
-
}
|
70
|
-
}
|
71
|
-
|
72
|
-
module.exports = NodeWatchFileSystem;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const Watchpack = require("watchpack");
|
8
|
+
|
9
|
+
class NodeWatchFileSystem {
|
10
|
+
constructor(inputFileSystem) {
|
11
|
+
this.inputFileSystem = inputFileSystem;
|
12
|
+
this.watcherOptions = {
|
13
|
+
aggregateTimeout: 0
|
14
|
+
};
|
15
|
+
this.watcher = new Watchpack(this.watcherOptions);
|
16
|
+
}
|
17
|
+
|
18
|
+
watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
|
19
|
+
if(!Array.isArray(files))
|
20
|
+
throw new Error("Invalid arguments: 'files'");
|
21
|
+
if(!Array.isArray(dirs))
|
22
|
+
throw new Error("Invalid arguments: 'dirs'");
|
23
|
+
if(!Array.isArray(missing))
|
24
|
+
throw new Error("Invalid arguments: 'missing'");
|
25
|
+
if(typeof callback !== "function")
|
26
|
+
throw new Error("Invalid arguments: 'callback'");
|
27
|
+
if(typeof startTime !== "number" && startTime)
|
28
|
+
throw new Error("Invalid arguments: 'startTime'");
|
29
|
+
if(typeof options !== "object")
|
30
|
+
throw new Error("Invalid arguments: 'options'");
|
31
|
+
if(typeof callbackUndelayed !== "function" && callbackUndelayed)
|
32
|
+
throw new Error("Invalid arguments: 'callbackUndelayed'");
|
33
|
+
const oldWatcher = this.watcher;
|
34
|
+
this.watcher = new Watchpack(options);
|
35
|
+
|
36
|
+
if(callbackUndelayed)
|
37
|
+
this.watcher.once("change", callbackUndelayed);
|
38
|
+
|
39
|
+
this.watcher.once("aggregated", (changes, removals) => {
|
40
|
+
changes = changes.concat(removals);
|
41
|
+
if(this.inputFileSystem && this.inputFileSystem.purge) {
|
42
|
+
this.inputFileSystem.purge(changes);
|
43
|
+
}
|
44
|
+
const times = this.watcher.getTimes();
|
45
|
+
callback(null,
|
46
|
+
changes.filter(file => files.indexOf(file) >= 0).sort(),
|
47
|
+
changes.filter(file => dirs.indexOf(file) >= 0).sort(),
|
48
|
+
changes.filter(file => missing.indexOf(file) >= 0).sort(), times, times);
|
49
|
+
});
|
50
|
+
|
51
|
+
this.watcher.watch(files.concat(missing), dirs.concat(missing), startTime);
|
52
|
+
|
53
|
+
if(oldWatcher) {
|
54
|
+
oldWatcher.close();
|
55
|
+
}
|
56
|
+
return {
|
57
|
+
close: () => {
|
58
|
+
if(this.watcher) {
|
59
|
+
this.watcher.close();
|
60
|
+
this.watcher = null;
|
61
|
+
}
|
62
|
+
},
|
63
|
+
pause: () => {
|
64
|
+
if(this.watcher) {
|
65
|
+
this.watcher.pause();
|
66
|
+
}
|
67
|
+
}
|
68
|
+
};
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
module.exports = NodeWatchFileSystem;
|
@@ -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
|
-
class ChunkModuleIdRangePlugin {
|
7
|
-
constructor(options) {
|
8
|
-
this.options = options;
|
9
|
-
}
|
10
|
-
apply(compiler) {
|
11
|
-
const options = this.options;
|
12
|
-
compiler.plugin("compilation", (compilation) => {
|
13
|
-
compilation.plugin("module-ids", (modules) => {
|
14
|
-
const chunk = this.chunks.find((chunk) => chunk.name === options.name);
|
15
|
-
if(!chunk) throw new Error("ChunkModuleIdRangePlugin: Chunk with name '" + options.name + "' was not found");
|
16
|
-
let currentId = options.start;
|
17
|
-
let chunkModules;
|
18
|
-
if(options.order) {
|
19
|
-
chunkModules = chunk.modules.slice();
|
20
|
-
switch(options.order) {
|
21
|
-
case "index":
|
22
|
-
chunkModules.sort((a, b) => {
|
23
|
-
return a.index - b.index;
|
24
|
-
});
|
25
|
-
break;
|
26
|
-
case "index2":
|
27
|
-
chunkModules.sort((a, b) => {
|
28
|
-
return a.index2 - b.index2;
|
29
|
-
});
|
30
|
-
break;
|
31
|
-
default:
|
32
|
-
throw new Error("ChunkModuleIdRangePlugin: unexpected value of order");
|
33
|
-
}
|
34
|
-
|
35
|
-
} else {
|
36
|
-
chunkModules = modules.filter((m) => {
|
37
|
-
return m.chunks.indexOf(chunk) >= 0;
|
38
|
-
});
|
39
|
-
}
|
40
|
-
|
41
|
-
for(let i = 0; i < chunkModules.length; i++) {
|
42
|
-
const m = chunkModules[i];
|
43
|
-
if(m.id === null) {
|
44
|
-
m.id = currentId++;
|
45
|
-
}
|
46
|
-
if(options.end && currentId > options.end)
|
47
|
-
break;
|
48
|
-
}
|
49
|
-
});
|
50
|
-
});
|
51
|
-
}
|
52
|
-
}
|
53
|
-
module.exports = ChunkModuleIdRangePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
class ChunkModuleIdRangePlugin {
|
7
|
+
constructor(options) {
|
8
|
+
this.options = options;
|
9
|
+
}
|
10
|
+
apply(compiler) {
|
11
|
+
const options = this.options;
|
12
|
+
compiler.plugin("compilation", (compilation) => {
|
13
|
+
compilation.plugin("module-ids", (modules) => {
|
14
|
+
const chunk = this.chunks.find((chunk) => chunk.name === options.name);
|
15
|
+
if(!chunk) throw new Error("ChunkModuleIdRangePlugin: Chunk with name '" + options.name + "' was not found");
|
16
|
+
let currentId = options.start;
|
17
|
+
let chunkModules;
|
18
|
+
if(options.order) {
|
19
|
+
chunkModules = chunk.modules.slice();
|
20
|
+
switch(options.order) {
|
21
|
+
case "index":
|
22
|
+
chunkModules.sort((a, b) => {
|
23
|
+
return a.index - b.index;
|
24
|
+
});
|
25
|
+
break;
|
26
|
+
case "index2":
|
27
|
+
chunkModules.sort((a, b) => {
|
28
|
+
return a.index2 - b.index2;
|
29
|
+
});
|
30
|
+
break;
|
31
|
+
default:
|
32
|
+
throw new Error("ChunkModuleIdRangePlugin: unexpected value of order");
|
33
|
+
}
|
34
|
+
|
35
|
+
} else {
|
36
|
+
chunkModules = modules.filter((m) => {
|
37
|
+
return m.chunks.indexOf(chunk) >= 0;
|
38
|
+
});
|
39
|
+
}
|
40
|
+
|
41
|
+
for(let i = 0; i < chunkModules.length; i++) {
|
42
|
+
const m = chunkModules[i];
|
43
|
+
if(m.id === null) {
|
44
|
+
m.id = currentId++;
|
45
|
+
}
|
46
|
+
if(options.end && currentId > options.end)
|
47
|
+
break;
|
48
|
+
}
|
49
|
+
});
|
50
|
+
});
|
51
|
+
}
|
52
|
+
}
|
53
|
+
module.exports = ChunkModuleIdRangePlugin;
|
@@ -4,6 +4,7 @@
|
|
4
4
|
*/
|
5
5
|
"use strict";
|
6
6
|
let nextIdent = 0;
|
7
|
+
|
7
8
|
class CommonsChunkPlugin {
|
8
9
|
constructor(options) {
|
9
10
|
if(arguments.length > 1) {
|
@@ -31,6 +32,7 @@ The available options are:
|
|
31
32
|
this.minChunks = normalizedOptions.minChunks;
|
32
33
|
this.selectedChunks = normalizedOptions.selectedChunks;
|
33
34
|
this.children = normalizedOptions.children;
|
35
|
+
this.deepChildren = normalizedOptions.deepChildren;
|
34
36
|
this.async = normalizedOptions.async;
|
35
37
|
this.minSize = normalizedOptions.minSize;
|
36
38
|
this.ident = __filename + (nextIdent++);
|
@@ -76,6 +78,7 @@ You can however specify the name of the async chunk by passing the desired strin
|
|
76
78
|
minChunks: options.minChunks,
|
77
79
|
selectedChunks: options.chunks,
|
78
80
|
children: options.children,
|
81
|
+
deepChildren: options.deepChildren,
|
79
82
|
async: options.async,
|
80
83
|
minSize: options.minSize
|
81
84
|
};
|
@@ -104,7 +107,7 @@ You can however specify the name of the async chunk by passing the desired strin
|
|
104
107
|
/**
|
105
108
|
* These chunks are subject to get "common" modules extracted and moved to the common chunk
|
106
109
|
*/
|
107
|
-
const affectedChunks = this.getAffectedChunks(compilation, chunks, targetChunk, targetChunks, idx, this.selectedChunks, this.async, this.children);
|
110
|
+
const affectedChunks = this.getAffectedChunks(compilation, chunks, targetChunk, targetChunks, idx, this.selectedChunks, this.async, this.children, this.deepChildren);
|
108
111
|
|
109
112
|
// bail if no chunk is affected
|
110
113
|
if(!affectedChunks) {
|
@@ -211,8 +214,39 @@ You can however specify the name of the async chunk by passing the desired strin
|
|
211
214
|
Take a look at the "name"/"names" or async/children option.`);
|
212
215
|
}
|
213
216
|
|
214
|
-
|
215
|
-
|
217
|
+
getAffectedUnnamedChunks(affectedChunks, targetChunk, rootChunk, asyncOption, deepChildrenOption) {
|
218
|
+
let chunks = targetChunk.chunks;
|
219
|
+
chunks && chunks.forEach((chunk) => {
|
220
|
+
if(chunk.isInitial()) {
|
221
|
+
return;
|
222
|
+
}
|
223
|
+
// If all the parents of a chunk are either
|
224
|
+
// a) the target chunk we started with
|
225
|
+
// b) themselves affected chunks
|
226
|
+
// we can assume that this chunk is an affected chunk too, as there is no way a chunk that
|
227
|
+
// isn't only depending on the target chunk is a parent of the chunk tested
|
228
|
+
if(asyncOption || chunk.parents.every((parentChunk) => parentChunk === rootChunk || affectedChunks.has(parentChunk))) {
|
229
|
+
// This check not only dedupes the affectedChunks but also guarantees we avoid endless loops
|
230
|
+
if(!affectedChunks.has(chunk)) {
|
231
|
+
// We mutate the affected chunks before going deeper, so the deeper levels and other branches
|
232
|
+
// have the information of this chunk being affected for their assertion if a chunk should
|
233
|
+
// not be affected
|
234
|
+
affectedChunks.add(chunk);
|
235
|
+
|
236
|
+
// We recurse down to all the children of the chunk, applying the same assumption.
|
237
|
+
// This guarantees that if a chunk should be an affected chunk,
|
238
|
+
// at the latest the last connection to the same chunk meets the
|
239
|
+
// condition to add it to the affected chunks.
|
240
|
+
if(deepChildrenOption === true) {
|
241
|
+
this.getAffectedUnnamedChunks(affectedChunks, chunk, rootChunk, asyncOption, deepChildrenOption);
|
242
|
+
}
|
243
|
+
}
|
244
|
+
}
|
245
|
+
});
|
246
|
+
}
|
247
|
+
|
248
|
+
getAffectedChunks(compilation, allChunks, targetChunk, targetChunks, currentIndex, selectedChunks, asyncOption, childrenOption, deepChildrenOption) {
|
249
|
+
const asyncOrNoSelectedChunk = childrenOption || asyncOption;
|
216
250
|
|
217
251
|
if(Array.isArray(selectedChunks)) {
|
218
252
|
return allChunks.filter(chunk => {
|
@@ -223,22 +257,9 @@ Take a look at the "name"/"names" or async/children option.`);
|
|
223
257
|
}
|
224
258
|
|
225
259
|
if(asyncOrNoSelectedChunk) {
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
}
|
230
|
-
|
231
|
-
return targetChunk.chunks.filter((chunk) => {
|
232
|
-
// we only are interested in on-demand chunks
|
233
|
-
if(chunk.isInitial())
|
234
|
-
return false;
|
235
|
-
|
236
|
-
// we can only move modules from this chunk if the "commonChunk" is the only parent
|
237
|
-
if(!asyncOption)
|
238
|
-
return chunk.parents.length === 1;
|
239
|
-
|
240
|
-
return true;
|
241
|
-
});
|
260
|
+
let affectedChunks = new Set();
|
261
|
+
this.getAffectedUnnamedChunks(affectedChunks, targetChunk, targetChunk, asyncOption, deepChildrenOption);
|
262
|
+
return Array.from(affectedChunks);
|
242
263
|
}
|
243
264
|
|
244
265
|
/**
|