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
@@ -1,22 +1,22 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const fs = require("fs");
|
8
|
-
const path = require("path");
|
9
|
-
const mkdirp = require("mkdirp");
|
10
|
-
|
11
|
-
class NodeOutputFileSystem {
|
12
|
-
constructor() {
|
13
|
-
this.mkdirp = mkdirp;
|
14
|
-
this.mkdir = fs.mkdir.bind(fs);
|
15
|
-
this.rmdir = fs.rmdir.bind(fs);
|
16
|
-
this.unlink = fs.unlink.bind(fs);
|
17
|
-
this.writeFile = fs.writeFile.bind(fs);
|
18
|
-
this.join = path.join.bind(path);
|
19
|
-
}
|
20
|
-
}
|
21
|
-
|
22
|
-
module.exports = NodeOutputFileSystem;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const fs = require("fs");
|
8
|
+
const path = require("path");
|
9
|
+
const mkdirp = require("mkdirp");
|
10
|
+
|
11
|
+
class NodeOutputFileSystem {
|
12
|
+
constructor() {
|
13
|
+
this.mkdirp = mkdirp;
|
14
|
+
this.mkdir = fs.mkdir.bind(fs);
|
15
|
+
this.rmdir = fs.rmdir.bind(fs);
|
16
|
+
this.unlink = fs.unlink.bind(fs);
|
17
|
+
this.writeFile = fs.writeFile.bind(fs);
|
18
|
+
this.join = path.join.bind(path);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
module.exports = NodeOutputFileSystem;
|
@@ -1,144 +1,144 @@
|
|
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) {
|
17
|
-
// allow single kill switch to turn off this plugin
|
18
|
-
return;
|
19
|
-
}
|
20
|
-
|
21
|
-
const getPathToModule = (module, type) => {
|
22
|
-
if (type === true || (type === undefined && nodeLibsBrowser[module])) {
|
23
|
-
if (!nodeLibsBrowser[module]) {
|
24
|
-
throw new Error(
|
25
|
-
`No browser version for node.js core module ${module} available`
|
26
|
-
);
|
27
|
-
}
|
28
|
-
return nodeLibsBrowser[module];
|
29
|
-
} else if (type === "mock") {
|
30
|
-
return require.resolve(`node-libs-browser/mock/${module}`);
|
31
|
-
} else if (type === "empty") {
|
32
|
-
return require.resolve("node-libs-browser/mock/empty");
|
33
|
-
} else {
|
34
|
-
return module;
|
35
|
-
}
|
36
|
-
};
|
37
|
-
|
38
|
-
const addExpression = (parser, name, module, type, suffix) => {
|
39
|
-
suffix = suffix || "";
|
40
|
-
parser.hooks.expression.for(name).tap("NodeSourcePlugin", () => {
|
41
|
-
if (
|
42
|
-
parser.state.module &&
|
43
|
-
parser.state.module.resource === getPathToModule(module, type)
|
44
|
-
)
|
45
|
-
return;
|
46
|
-
const mockModule = ParserHelpers.requireFileAsExpression(
|
47
|
-
parser.state.module.context,
|
48
|
-
getPathToModule(module, type)
|
49
|
-
);
|
50
|
-
return ParserHelpers.addParsedVariableToModule(
|
51
|
-
parser,
|
52
|
-
name,
|
53
|
-
mockModule + suffix
|
54
|
-
);
|
55
|
-
});
|
56
|
-
};
|
57
|
-
|
58
|
-
compiler.hooks.compilation.tap(
|
59
|
-
"NodeSourcePlugin",
|
60
|
-
(compilation, { normalModuleFactory }) => {
|
61
|
-
const handler = (parser, parserOptions) => {
|
62
|
-
if (parserOptions.node === false) return;
|
63
|
-
|
64
|
-
let localOptions = options;
|
65
|
-
if (parserOptions.node) {
|
66
|
-
localOptions = Object.assign({}, localOptions, parserOptions.node);
|
67
|
-
}
|
68
|
-
if (localOptions.global) {
|
69
|
-
parser.hooks.expression
|
70
|
-
.for("global")
|
71
|
-
.tap("NodeSourcePlugin", () => {
|
72
|
-
const retrieveGlobalModule = ParserHelpers.requireFileAsExpression(
|
73
|
-
parser.state.module.context,
|
74
|
-
require.resolve("../../buildin/global
|
75
|
-
);
|
76
|
-
return ParserHelpers.addParsedVariableToModule(
|
77
|
-
parser,
|
78
|
-
"global",
|
79
|
-
retrieveGlobalModule
|
80
|
-
);
|
81
|
-
});
|
82
|
-
}
|
83
|
-
if (localOptions.process) {
|
84
|
-
const processType = localOptions.process;
|
85
|
-
addExpression(parser, "process", "process", processType);
|
86
|
-
}
|
87
|
-
if (localOptions.console) {
|
88
|
-
const consoleType = localOptions.console;
|
89
|
-
addExpression(parser, "console", "console", consoleType);
|
90
|
-
}
|
91
|
-
const bufferType = localOptions.Buffer;
|
92
|
-
if (bufferType) {
|
93
|
-
addExpression(parser, "Buffer", "buffer", bufferType, ".Buffer");
|
94
|
-
}
|
95
|
-
if (localOptions.setImmediate) {
|
96
|
-
const setImmediateType = localOptions.setImmediate;
|
97
|
-
addExpression(
|
98
|
-
parser,
|
99
|
-
"setImmediate",
|
100
|
-
"timers",
|
101
|
-
setImmediateType,
|
102
|
-
".setImmediate"
|
103
|
-
);
|
104
|
-
addExpression(
|
105
|
-
parser,
|
106
|
-
"clearImmediate",
|
107
|
-
"timers",
|
108
|
-
setImmediateType,
|
109
|
-
".clearImmediate"
|
110
|
-
);
|
111
|
-
}
|
112
|
-
};
|
113
|
-
normalModuleFactory.hooks.parser
|
114
|
-
.for("javascript/auto")
|
115
|
-
.tap("NodeSourcePlugin", handler);
|
116
|
-
normalModuleFactory.hooks.parser
|
117
|
-
.for("javascript/dynamic")
|
118
|
-
.tap("NodeSourcePlugin", handler);
|
119
|
-
normalModuleFactory.hooks.parser
|
120
|
-
.for("javascript/esm")
|
121
|
-
.tap("NodeSourcePlugin", handler);
|
122
|
-
}
|
123
|
-
);
|
124
|
-
compiler.hooks.afterResolvers.tap("NodeSourcePlugin", compiler => {
|
125
|
-
for (const lib of Object.keys(nodeLibsBrowser)) {
|
126
|
-
if (options[lib] !== false) {
|
127
|
-
compiler.resolverFactory.hooks.resolver
|
128
|
-
.for("normal")
|
129
|
-
.tap("NodeSourcePlugin", resolver => {
|
130
|
-
new AliasPlugin(
|
131
|
-
"described-resolve",
|
132
|
-
{
|
133
|
-
name: lib,
|
134
|
-
onlyModule: true,
|
135
|
-
alias: getPathToModule(lib, options[lib])
|
136
|
-
},
|
137
|
-
"resolve"
|
138
|
-
).apply(resolver);
|
139
|
-
});
|
140
|
-
}
|
141
|
-
}
|
142
|
-
});
|
143
|
-
}
|
144
|
-
};
|
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) {
|
17
|
+
// allow single kill switch to turn off this plugin
|
18
|
+
return;
|
19
|
+
}
|
20
|
+
|
21
|
+
const getPathToModule = (module, type) => {
|
22
|
+
if (type === true || (type === undefined && nodeLibsBrowser[module])) {
|
23
|
+
if (!nodeLibsBrowser[module]) {
|
24
|
+
throw new Error(
|
25
|
+
`No browser version for node.js core module ${module} available`
|
26
|
+
);
|
27
|
+
}
|
28
|
+
return nodeLibsBrowser[module];
|
29
|
+
} else if (type === "mock") {
|
30
|
+
return require.resolve(`node-libs-browser/mock/${module}`);
|
31
|
+
} else if (type === "empty") {
|
32
|
+
return require.resolve("node-libs-browser/mock/empty");
|
33
|
+
} else {
|
34
|
+
return module;
|
35
|
+
}
|
36
|
+
};
|
37
|
+
|
38
|
+
const addExpression = (parser, name, module, type, suffix) => {
|
39
|
+
suffix = suffix || "";
|
40
|
+
parser.hooks.expression.for(name).tap("NodeSourcePlugin", () => {
|
41
|
+
if (
|
42
|
+
parser.state.module &&
|
43
|
+
parser.state.module.resource === getPathToModule(module, type)
|
44
|
+
)
|
45
|
+
return;
|
46
|
+
const mockModule = ParserHelpers.requireFileAsExpression(
|
47
|
+
parser.state.module.context,
|
48
|
+
getPathToModule(module, type)
|
49
|
+
);
|
50
|
+
return ParserHelpers.addParsedVariableToModule(
|
51
|
+
parser,
|
52
|
+
name,
|
53
|
+
mockModule + suffix
|
54
|
+
);
|
55
|
+
});
|
56
|
+
};
|
57
|
+
|
58
|
+
compiler.hooks.compilation.tap(
|
59
|
+
"NodeSourcePlugin",
|
60
|
+
(compilation, { normalModuleFactory }) => {
|
61
|
+
const handler = (parser, parserOptions) => {
|
62
|
+
if (parserOptions.node === false) return;
|
63
|
+
|
64
|
+
let localOptions = options;
|
65
|
+
if (parserOptions.node) {
|
66
|
+
localOptions = Object.assign({}, localOptions, parserOptions.node);
|
67
|
+
}
|
68
|
+
if (localOptions.global) {
|
69
|
+
parser.hooks.expression
|
70
|
+
.for("global")
|
71
|
+
.tap("NodeSourcePlugin", () => {
|
72
|
+
const retrieveGlobalModule = ParserHelpers.requireFileAsExpression(
|
73
|
+
parser.state.module.context,
|
74
|
+
require.resolve("../../buildin/global")
|
75
|
+
);
|
76
|
+
return ParserHelpers.addParsedVariableToModule(
|
77
|
+
parser,
|
78
|
+
"global",
|
79
|
+
retrieveGlobalModule
|
80
|
+
);
|
81
|
+
});
|
82
|
+
}
|
83
|
+
if (localOptions.process) {
|
84
|
+
const processType = localOptions.process;
|
85
|
+
addExpression(parser, "process", "process", processType);
|
86
|
+
}
|
87
|
+
if (localOptions.console) {
|
88
|
+
const consoleType = localOptions.console;
|
89
|
+
addExpression(parser, "console", "console", consoleType);
|
90
|
+
}
|
91
|
+
const bufferType = localOptions.Buffer;
|
92
|
+
if (bufferType) {
|
93
|
+
addExpression(parser, "Buffer", "buffer", bufferType, ".Buffer");
|
94
|
+
}
|
95
|
+
if (localOptions.setImmediate) {
|
96
|
+
const setImmediateType = localOptions.setImmediate;
|
97
|
+
addExpression(
|
98
|
+
parser,
|
99
|
+
"setImmediate",
|
100
|
+
"timers",
|
101
|
+
setImmediateType,
|
102
|
+
".setImmediate"
|
103
|
+
);
|
104
|
+
addExpression(
|
105
|
+
parser,
|
106
|
+
"clearImmediate",
|
107
|
+
"timers",
|
108
|
+
setImmediateType,
|
109
|
+
".clearImmediate"
|
110
|
+
);
|
111
|
+
}
|
112
|
+
};
|
113
|
+
normalModuleFactory.hooks.parser
|
114
|
+
.for("javascript/auto")
|
115
|
+
.tap("NodeSourcePlugin", handler);
|
116
|
+
normalModuleFactory.hooks.parser
|
117
|
+
.for("javascript/dynamic")
|
118
|
+
.tap("NodeSourcePlugin", handler);
|
119
|
+
normalModuleFactory.hooks.parser
|
120
|
+
.for("javascript/esm")
|
121
|
+
.tap("NodeSourcePlugin", handler);
|
122
|
+
}
|
123
|
+
);
|
124
|
+
compiler.hooks.afterResolvers.tap("NodeSourcePlugin", compiler => {
|
125
|
+
for (const lib of Object.keys(nodeLibsBrowser)) {
|
126
|
+
if (options[lib] !== false) {
|
127
|
+
compiler.resolverFactory.hooks.resolver
|
128
|
+
.for("normal")
|
129
|
+
.tap("NodeSourcePlugin", resolver => {
|
130
|
+
new AliasPlugin(
|
131
|
+
"described-resolve",
|
132
|
+
{
|
133
|
+
name: lib,
|
134
|
+
onlyModule: true,
|
135
|
+
alias: getPathToModule(lib, options[lib])
|
136
|
+
},
|
137
|
+
"resolve"
|
138
|
+
).apply(resolver);
|
139
|
+
});
|
140
|
+
}
|
141
|
+
}
|
142
|
+
});
|
143
|
+
}
|
144
|
+
};
|
@@ -1,18 +1,18 @@
|
|
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
|
-
const builtins =
|
10
|
-
require("module").builtinModules || Object.keys(process.binding("natives"));
|
11
|
-
|
12
|
-
class NodeTargetPlugin {
|
13
|
-
apply(compiler) {
|
14
|
-
new ExternalsPlugin("commonjs", builtins).apply(compiler);
|
15
|
-
}
|
16
|
-
}
|
17
|
-
|
18
|
-
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
|
+
const builtins =
|
10
|
+
require("module").builtinModules || Object.keys(process.binding("natives"));
|
11
|
+
|
12
|
+
class NodeTargetPlugin {
|
13
|
+
apply(compiler) {
|
14
|
+
new ExternalsPlugin("commonjs", builtins).apply(compiler);
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
module.exports = NodeTargetPlugin;
|
@@ -1,31 +1,31 @@
|
|
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.hooks.thisCompilation.tap("NodeTemplatePlugin", compilation => {
|
20
|
-
new NodeMainTemplatePlugin(this.asyncChunkLoading).apply(
|
21
|
-
compilation.mainTemplate
|
22
|
-
);
|
23
|
-
new NodeChunkTemplatePlugin().apply(compilation.chunkTemplate);
|
24
|
-
new NodeHotUpdateChunkTemplatePlugin().apply(
|
25
|
-
compilation.hotUpdateChunkTemplate
|
26
|
-
);
|
27
|
-
});
|
28
|
-
}
|
29
|
-
}
|
30
|
-
|
31
|
-
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.hooks.thisCompilation.tap("NodeTemplatePlugin", compilation => {
|
20
|
+
new NodeMainTemplatePlugin(this.asyncChunkLoading).apply(
|
21
|
+
compilation.mainTemplate
|
22
|
+
);
|
23
|
+
new NodeChunkTemplatePlugin().apply(compilation.chunkTemplate);
|
24
|
+
new NodeHotUpdateChunkTemplatePlugin().apply(
|
25
|
+
compilation.hotUpdateChunkTemplate
|
26
|
+
);
|
27
|
+
});
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
module.exports = NodeTemplatePlugin;
|
@@ -1,99 +1,99 @@
|
|
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
|
-
const objectToMap = require("../util/objectToMap");
|
9
|
-
|
10
|
-
class NodeWatchFileSystem {
|
11
|
-
constructor(inputFileSystem) {
|
12
|
-
this.inputFileSystem = inputFileSystem;
|
13
|
-
this.watcherOptions = {
|
14
|
-
aggregateTimeout: 0
|
15
|
-
};
|
16
|
-
this.watcher = new Watchpack(this.watcherOptions);
|
17
|
-
}
|
18
|
-
|
19
|
-
watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
|
20
|
-
if (!Array.isArray(files)) {
|
21
|
-
throw new Error("Invalid arguments: 'files'");
|
22
|
-
}
|
23
|
-
if (!Array.isArray(dirs)) {
|
24
|
-
throw new Error("Invalid arguments: 'dirs'");
|
25
|
-
}
|
26
|
-
if (!Array.isArray(missing)) {
|
27
|
-
throw new Error("Invalid arguments: 'missing'");
|
28
|
-
}
|
29
|
-
if (typeof callback !== "function") {
|
30
|
-
throw new Error("Invalid arguments: 'callback'");
|
31
|
-
}
|
32
|
-
if (typeof startTime !== "number" && startTime) {
|
33
|
-
throw new Error("Invalid arguments: 'startTime'");
|
34
|
-
}
|
35
|
-
if (typeof options !== "object") {
|
36
|
-
throw new Error("Invalid arguments: 'options'");
|
37
|
-
}
|
38
|
-
if (typeof callbackUndelayed !== "function" && callbackUndelayed) {
|
39
|
-
throw new Error("Invalid arguments: 'callbackUndelayed'");
|
40
|
-
}
|
41
|
-
const oldWatcher = this.watcher;
|
42
|
-
this.watcher = new Watchpack(options);
|
43
|
-
|
44
|
-
if (callbackUndelayed) {
|
45
|
-
this.watcher.once("change", callbackUndelayed);
|
46
|
-
}
|
47
|
-
|
48
|
-
this.watcher.once("aggregated", (changes, removals) => {
|
49
|
-
changes = changes.concat(removals);
|
50
|
-
if (this.inputFileSystem && this.inputFileSystem.purge) {
|
51
|
-
this.inputFileSystem.purge(changes);
|
52
|
-
}
|
53
|
-
const times = objectToMap(this.watcher.getTimes());
|
54
|
-
callback(
|
55
|
-
null,
|
56
|
-
changes.filter(file => files.includes(file)).sort(),
|
57
|
-
changes.filter(file => dirs.includes(file)).sort(),
|
58
|
-
changes.filter(file => missing.includes(file)).sort(),
|
59
|
-
times,
|
60
|
-
times
|
61
|
-
);
|
62
|
-
});
|
63
|
-
|
64
|
-
this.watcher.watch(files.concat(missing), dirs.concat(missing), startTime);
|
65
|
-
|
66
|
-
if (oldWatcher) {
|
67
|
-
oldWatcher.close();
|
68
|
-
}
|
69
|
-
return {
|
70
|
-
close: () => {
|
71
|
-
if (this.watcher) {
|
72
|
-
this.watcher.close();
|
73
|
-
this.watcher = null;
|
74
|
-
}
|
75
|
-
},
|
76
|
-
pause: () => {
|
77
|
-
if (this.watcher) {
|
78
|
-
this.watcher.pause();
|
79
|
-
}
|
80
|
-
},
|
81
|
-
getFileTimestamps: () => {
|
82
|
-
if (this.watcher) {
|
83
|
-
return objectToMap(this.watcher.getTimes());
|
84
|
-
} else {
|
85
|
-
return new Map();
|
86
|
-
}
|
87
|
-
},
|
88
|
-
getContextTimestamps: () => {
|
89
|
-
if (this.watcher) {
|
90
|
-
return objectToMap(this.watcher.getTimes());
|
91
|
-
} else {
|
92
|
-
return new Map();
|
93
|
-
}
|
94
|
-
}
|
95
|
-
};
|
96
|
-
}
|
97
|
-
}
|
98
|
-
|
99
|
-
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
|
+
const objectToMap = require("../util/objectToMap");
|
9
|
+
|
10
|
+
class NodeWatchFileSystem {
|
11
|
+
constructor(inputFileSystem) {
|
12
|
+
this.inputFileSystem = inputFileSystem;
|
13
|
+
this.watcherOptions = {
|
14
|
+
aggregateTimeout: 0
|
15
|
+
};
|
16
|
+
this.watcher = new Watchpack(this.watcherOptions);
|
17
|
+
}
|
18
|
+
|
19
|
+
watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
|
20
|
+
if (!Array.isArray(files)) {
|
21
|
+
throw new Error("Invalid arguments: 'files'");
|
22
|
+
}
|
23
|
+
if (!Array.isArray(dirs)) {
|
24
|
+
throw new Error("Invalid arguments: 'dirs'");
|
25
|
+
}
|
26
|
+
if (!Array.isArray(missing)) {
|
27
|
+
throw new Error("Invalid arguments: 'missing'");
|
28
|
+
}
|
29
|
+
if (typeof callback !== "function") {
|
30
|
+
throw new Error("Invalid arguments: 'callback'");
|
31
|
+
}
|
32
|
+
if (typeof startTime !== "number" && startTime) {
|
33
|
+
throw new Error("Invalid arguments: 'startTime'");
|
34
|
+
}
|
35
|
+
if (typeof options !== "object") {
|
36
|
+
throw new Error("Invalid arguments: 'options'");
|
37
|
+
}
|
38
|
+
if (typeof callbackUndelayed !== "function" && callbackUndelayed) {
|
39
|
+
throw new Error("Invalid arguments: 'callbackUndelayed'");
|
40
|
+
}
|
41
|
+
const oldWatcher = this.watcher;
|
42
|
+
this.watcher = new Watchpack(options);
|
43
|
+
|
44
|
+
if (callbackUndelayed) {
|
45
|
+
this.watcher.once("change", callbackUndelayed);
|
46
|
+
}
|
47
|
+
|
48
|
+
this.watcher.once("aggregated", (changes, removals) => {
|
49
|
+
changes = changes.concat(removals);
|
50
|
+
if (this.inputFileSystem && this.inputFileSystem.purge) {
|
51
|
+
this.inputFileSystem.purge(changes);
|
52
|
+
}
|
53
|
+
const times = objectToMap(this.watcher.getTimes());
|
54
|
+
callback(
|
55
|
+
null,
|
56
|
+
changes.filter(file => files.includes(file)).sort(),
|
57
|
+
changes.filter(file => dirs.includes(file)).sort(),
|
58
|
+
changes.filter(file => missing.includes(file)).sort(),
|
59
|
+
times,
|
60
|
+
times
|
61
|
+
);
|
62
|
+
});
|
63
|
+
|
64
|
+
this.watcher.watch(files.concat(missing), dirs.concat(missing), startTime);
|
65
|
+
|
66
|
+
if (oldWatcher) {
|
67
|
+
oldWatcher.close();
|
68
|
+
}
|
69
|
+
return {
|
70
|
+
close: () => {
|
71
|
+
if (this.watcher) {
|
72
|
+
this.watcher.close();
|
73
|
+
this.watcher = null;
|
74
|
+
}
|
75
|
+
},
|
76
|
+
pause: () => {
|
77
|
+
if (this.watcher) {
|
78
|
+
this.watcher.pause();
|
79
|
+
}
|
80
|
+
},
|
81
|
+
getFileTimestamps: () => {
|
82
|
+
if (this.watcher) {
|
83
|
+
return objectToMap(this.watcher.getTimes());
|
84
|
+
} else {
|
85
|
+
return new Map();
|
86
|
+
}
|
87
|
+
},
|
88
|
+
getContextTimestamps: () => {
|
89
|
+
if (this.watcher) {
|
90
|
+
return objectToMap(this.watcher.getTimes());
|
91
|
+
} else {
|
92
|
+
return new Map();
|
93
|
+
}
|
94
|
+
}
|
95
|
+
};
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
module.exports = NodeWatchFileSystem;
|