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,102 +1,102 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Sean Larkin @thelarkinn
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const EntrypointsOverSizeLimitWarning = require("./EntrypointsOverSizeLimitWarning");
|
7
|
-
const AssetsOverSizeLimitWarning = require("./AssetsOverSizeLimitWarning");
|
8
|
-
const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
|
9
|
-
|
10
|
-
module.exports = class SizeLimitsPlugin {
|
11
|
-
constructor(options) {
|
12
|
-
this.hints = options.hints;
|
13
|
-
this.maxAssetSize = options.maxAssetSize;
|
14
|
-
this.maxEntrypointSize = options.maxEntrypointSize;
|
15
|
-
this.assetFilter = options.assetFilter;
|
16
|
-
}
|
17
|
-
apply(compiler) {
|
18
|
-
const entrypointSizeLimit = this.maxEntrypointSize;
|
19
|
-
const assetSizeLimit = this.maxAssetSize;
|
20
|
-
const hints = this.hints;
|
21
|
-
const assetFilter = this.assetFilter || (asset => !(/\.map$/.test(asset)));
|
22
|
-
|
23
|
-
compiler.plugin("after-emit", (compilation, callback) => {
|
24
|
-
const warnings = [];
|
25
|
-
|
26
|
-
const getEntrypointSize = entrypoint =>
|
27
|
-
entrypoint.getFiles()
|
28
|
-
.filter(assetFilter)
|
29
|
-
.map(file => compilation.assets[file])
|
30
|
-
.filter(Boolean)
|
31
|
-
.map(asset => asset.size())
|
32
|
-
.reduce((currentSize, nextSize) => currentSize + nextSize, 0);
|
33
|
-
|
34
|
-
const assetsOverSizeLimit = [];
|
35
|
-
Object.keys(compilation.assets)
|
36
|
-
.filter(assetFilter)
|
37
|
-
.forEach(assetName => {
|
38
|
-
const asset = compilation.assets[assetName];
|
39
|
-
const size = asset.size();
|
40
|
-
|
41
|
-
if(size > assetSizeLimit) {
|
42
|
-
assetsOverSizeLimit.push({
|
43
|
-
name: assetName,
|
44
|
-
size: size,
|
45
|
-
});
|
46
|
-
asset.isOverSizeLimit = true;
|
47
|
-
}
|
48
|
-
});
|
49
|
-
|
50
|
-
const entrypointsOverLimit = [];
|
51
|
-
Object.keys(compilation.entrypoints)
|
52
|
-
.forEach(key => {
|
53
|
-
const entry = compilation.entrypoints[key];
|
54
|
-
const size = getEntrypointSize(entry, compilation);
|
55
|
-
|
56
|
-
if(size > entrypointSizeLimit) {
|
57
|
-
entrypointsOverLimit.push({
|
58
|
-
name: key,
|
59
|
-
size: size,
|
60
|
-
files: entry.getFiles().filter(assetFilter)
|
61
|
-
});
|
62
|
-
entry.isOverSizeLimit = true;
|
63
|
-
}
|
64
|
-
});
|
65
|
-
|
66
|
-
if(hints) {
|
67
|
-
// 1. Individual Chunk: Size < 250kb
|
68
|
-
// 2. Collective Initial Chunks [entrypoint] (Each Set?): Size < 250kb
|
69
|
-
// 3. No Async Chunks
|
70
|
-
// if !1, then 2, if !2 return
|
71
|
-
if(assetsOverSizeLimit.length > 0) {
|
72
|
-
warnings.push(
|
73
|
-
new AssetsOverSizeLimitWarning(
|
74
|
-
assetsOverSizeLimit,
|
75
|
-
assetSizeLimit));
|
76
|
-
}
|
77
|
-
if(entrypointsOverLimit.length > 0) {
|
78
|
-
warnings.push(
|
79
|
-
new EntrypointsOverSizeLimitWarning(
|
80
|
-
entrypointsOverLimit,
|
81
|
-
entrypointSizeLimit));
|
82
|
-
}
|
83
|
-
|
84
|
-
if(warnings.length > 0) {
|
85
|
-
const hasAsyncChunks = compilation.chunks.filter(chunk => !chunk.isInitial()).length > 0;
|
86
|
-
|
87
|
-
if(!hasAsyncChunks) {
|
88
|
-
warnings.push(new NoAsyncChunksWarning());
|
89
|
-
}
|
90
|
-
|
91
|
-
if(hints === "error") {
|
92
|
-
Array.prototype.push.apply(compilation.errors, warnings);
|
93
|
-
} else {
|
94
|
-
Array.prototype.push.apply(compilation.warnings, warnings);
|
95
|
-
}
|
96
|
-
}
|
97
|
-
}
|
98
|
-
|
99
|
-
callback();
|
100
|
-
});
|
101
|
-
}
|
102
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Sean Larkin @thelarkinn
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const EntrypointsOverSizeLimitWarning = require("./EntrypointsOverSizeLimitWarning");
|
7
|
+
const AssetsOverSizeLimitWarning = require("./AssetsOverSizeLimitWarning");
|
8
|
+
const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
|
9
|
+
|
10
|
+
module.exports = class SizeLimitsPlugin {
|
11
|
+
constructor(options) {
|
12
|
+
this.hints = options.hints;
|
13
|
+
this.maxAssetSize = options.maxAssetSize;
|
14
|
+
this.maxEntrypointSize = options.maxEntrypointSize;
|
15
|
+
this.assetFilter = options.assetFilter;
|
16
|
+
}
|
17
|
+
apply(compiler) {
|
18
|
+
const entrypointSizeLimit = this.maxEntrypointSize;
|
19
|
+
const assetSizeLimit = this.maxAssetSize;
|
20
|
+
const hints = this.hints;
|
21
|
+
const assetFilter = this.assetFilter || (asset => !(/\.map$/.test(asset)));
|
22
|
+
|
23
|
+
compiler.plugin("after-emit", (compilation, callback) => {
|
24
|
+
const warnings = [];
|
25
|
+
|
26
|
+
const getEntrypointSize = entrypoint =>
|
27
|
+
entrypoint.getFiles()
|
28
|
+
.filter(assetFilter)
|
29
|
+
.map(file => compilation.assets[file])
|
30
|
+
.filter(Boolean)
|
31
|
+
.map(asset => asset.size())
|
32
|
+
.reduce((currentSize, nextSize) => currentSize + nextSize, 0);
|
33
|
+
|
34
|
+
const assetsOverSizeLimit = [];
|
35
|
+
Object.keys(compilation.assets)
|
36
|
+
.filter(assetFilter)
|
37
|
+
.forEach(assetName => {
|
38
|
+
const asset = compilation.assets[assetName];
|
39
|
+
const size = asset.size();
|
40
|
+
|
41
|
+
if(size > assetSizeLimit) {
|
42
|
+
assetsOverSizeLimit.push({
|
43
|
+
name: assetName,
|
44
|
+
size: size,
|
45
|
+
});
|
46
|
+
asset.isOverSizeLimit = true;
|
47
|
+
}
|
48
|
+
});
|
49
|
+
|
50
|
+
const entrypointsOverLimit = [];
|
51
|
+
Object.keys(compilation.entrypoints)
|
52
|
+
.forEach(key => {
|
53
|
+
const entry = compilation.entrypoints[key];
|
54
|
+
const size = getEntrypointSize(entry, compilation);
|
55
|
+
|
56
|
+
if(size > entrypointSizeLimit) {
|
57
|
+
entrypointsOverLimit.push({
|
58
|
+
name: key,
|
59
|
+
size: size,
|
60
|
+
files: entry.getFiles().filter(assetFilter)
|
61
|
+
});
|
62
|
+
entry.isOverSizeLimit = true;
|
63
|
+
}
|
64
|
+
});
|
65
|
+
|
66
|
+
if(hints) {
|
67
|
+
// 1. Individual Chunk: Size < 250kb
|
68
|
+
// 2. Collective Initial Chunks [entrypoint] (Each Set?): Size < 250kb
|
69
|
+
// 3. No Async Chunks
|
70
|
+
// if !1, then 2, if !2 return
|
71
|
+
if(assetsOverSizeLimit.length > 0) {
|
72
|
+
warnings.push(
|
73
|
+
new AssetsOverSizeLimitWarning(
|
74
|
+
assetsOverSizeLimit,
|
75
|
+
assetSizeLimit));
|
76
|
+
}
|
77
|
+
if(entrypointsOverLimit.length > 0) {
|
78
|
+
warnings.push(
|
79
|
+
new EntrypointsOverSizeLimitWarning(
|
80
|
+
entrypointsOverLimit,
|
81
|
+
entrypointSizeLimit));
|
82
|
+
}
|
83
|
+
|
84
|
+
if(warnings.length > 0) {
|
85
|
+
const hasAsyncChunks = compilation.chunks.filter(chunk => !chunk.isInitial()).length > 0;
|
86
|
+
|
87
|
+
if(!hasAsyncChunks) {
|
88
|
+
warnings.push(new NoAsyncChunksWarning());
|
89
|
+
}
|
90
|
+
|
91
|
+
if(hints === "error") {
|
92
|
+
Array.prototype.push.apply(compilation.errors, warnings);
|
93
|
+
} else {
|
94
|
+
Array.prototype.push.apply(compilation.warnings, warnings);
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
callback();
|
100
|
+
});
|
101
|
+
}
|
102
|
+
};
|
package/lib/prepareOptions.js
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
module.exports = function prepareOptions(options, argv) {
|
4
|
-
argv = argv || {};
|
5
|
-
|
6
|
-
options = handleExport(options);
|
7
|
-
|
8
|
-
if(Array.isArray(options)) {
|
9
|
-
options = options.map(_options => handleFunction(_options, argv));
|
10
|
-
} else {
|
11
|
-
options = handleFunction(options, argv);
|
12
|
-
}
|
13
|
-
return options;
|
14
|
-
};
|
15
|
-
|
16
|
-
function handleExport(options) {
|
17
|
-
const isES6DefaultExported = (
|
18
|
-
typeof options === "object" && options !== null && typeof options.default !== "undefined"
|
19
|
-
);
|
20
|
-
options = isES6DefaultExported ? options.default : options;
|
21
|
-
return options;
|
22
|
-
}
|
23
|
-
|
24
|
-
function handleFunction(options, argv) {
|
25
|
-
if(typeof options === "function") {
|
26
|
-
options = options(argv.env, argv);
|
27
|
-
}
|
28
|
-
return options;
|
29
|
-
}
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
module.exports = function prepareOptions(options, argv) {
|
4
|
+
argv = argv || {};
|
5
|
+
|
6
|
+
options = handleExport(options);
|
7
|
+
|
8
|
+
if(Array.isArray(options)) {
|
9
|
+
options = options.map(_options => handleFunction(_options, argv));
|
10
|
+
} else {
|
11
|
+
options = handleFunction(options, argv);
|
12
|
+
}
|
13
|
+
return options;
|
14
|
+
};
|
15
|
+
|
16
|
+
function handleExport(options) {
|
17
|
+
const isES6DefaultExported = (
|
18
|
+
typeof options === "object" && options !== null && typeof options.default !== "undefined"
|
19
|
+
);
|
20
|
+
options = isES6DefaultExported ? options.default : options;
|
21
|
+
return options;
|
22
|
+
}
|
23
|
+
|
24
|
+
function handleFunction(options, argv) {
|
25
|
+
if(typeof options === "function") {
|
26
|
+
options = options(argv.env, argv);
|
27
|
+
}
|
28
|
+
return options;
|
29
|
+
}
|
package/lib/removeAndDo.js
CHANGED
@@ -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
|
-
module.exports = function removeAndDo(collection, thing, action) {
|
8
|
-
const idx = this[collection].indexOf(thing);
|
9
|
-
const hasThingInCollection = idx >= 0;
|
10
|
-
if(hasThingInCollection) {
|
11
|
-
this[collection].splice(idx, 1);
|
12
|
-
thing[action](this);
|
13
|
-
}
|
14
|
-
return hasThingInCollection;
|
15
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
module.exports = function removeAndDo(collection, thing, action) {
|
8
|
+
const idx = this[collection].indexOf(thing);
|
9
|
+
const hasThingInCollection = idx >= 0;
|
10
|
+
if(hasThingInCollection) {
|
11
|
+
this[collection].splice(idx, 1);
|
12
|
+
thing[action](this);
|
13
|
+
}
|
14
|
+
return hasThingInCollection;
|
15
|
+
};
|
@@ -0,0 +1,42 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
module.exports = class Queue {
|
4
|
+
constructor(items) {
|
5
|
+
this.first = null;
|
6
|
+
this.last = null;
|
7
|
+
this.length = 0;
|
8
|
+
if(items) {
|
9
|
+
for(const item of items) {
|
10
|
+
this.enqueue(item);
|
11
|
+
}
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
enqueue(item) {
|
16
|
+
const first = this.first;
|
17
|
+
const node = {
|
18
|
+
item,
|
19
|
+
next: null
|
20
|
+
};
|
21
|
+
if(first === null) {
|
22
|
+
this.last = node;
|
23
|
+
} else {
|
24
|
+
first.next = node;
|
25
|
+
}
|
26
|
+
this.first = node;
|
27
|
+
this.length++;
|
28
|
+
}
|
29
|
+
|
30
|
+
dequeue() {
|
31
|
+
const last = this.last;
|
32
|
+
if(last === null)
|
33
|
+
return undefined;
|
34
|
+
const next = last.next;
|
35
|
+
if(next === null) {
|
36
|
+
this.first = null;
|
37
|
+
}
|
38
|
+
this.last = next;
|
39
|
+
this.length--;
|
40
|
+
return last.item;
|
41
|
+
}
|
42
|
+
};
|
package/lib/util/Semaphore.js
CHANGED
@@ -1,32 +1,32 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
class Semaphore {
|
8
|
-
constructor(available) {
|
9
|
-
this.available = available;
|
10
|
-
this.waiters = [];
|
11
|
-
}
|
12
|
-
|
13
|
-
acquire(callback) {
|
14
|
-
if(this.available > 0) {
|
15
|
-
this.available--;
|
16
|
-
callback();
|
17
|
-
} else {
|
18
|
-
this.waiters.push(callback);
|
19
|
-
}
|
20
|
-
}
|
21
|
-
|
22
|
-
release() {
|
23
|
-
if(this.waiters.length > 0) {
|
24
|
-
const callback = this.waiters.pop();
|
25
|
-
process.nextTick(callback);
|
26
|
-
} else {
|
27
|
-
this.available++;
|
28
|
-
}
|
29
|
-
}
|
30
|
-
}
|
31
|
-
|
32
|
-
module.exports = Semaphore;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class Semaphore {
|
8
|
+
constructor(available) {
|
9
|
+
this.available = available;
|
10
|
+
this.waiters = [];
|
11
|
+
}
|
12
|
+
|
13
|
+
acquire(callback) {
|
14
|
+
if(this.available > 0) {
|
15
|
+
this.available--;
|
16
|
+
callback();
|
17
|
+
} else {
|
18
|
+
this.waiters.push(callback);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
release() {
|
23
|
+
if(this.waiters.length > 0) {
|
24
|
+
const callback = this.waiters.pop();
|
25
|
+
process.nextTick(callback);
|
26
|
+
} else {
|
27
|
+
this.available++;
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
module.exports = Semaphore;
|
package/lib/util/identifier.js
CHANGED
@@ -1,38 +1,38 @@
|
|
1
|
-
"use strict";
|
2
|
-
const path = require("path");
|
3
|
-
|
4
|
-
const looksLikeAbsolutePath = (maybeAbsolutePath) => {
|
5
|
-
return /^(?:[a-z]:\\|\/)/i.test(maybeAbsolutePath);
|
6
|
-
};
|
7
|
-
|
8
|
-
const normalizePathSeparator = (p) => p.replace(/\\/g, "/");
|
9
|
-
|
10
|
-
const _makePathsRelative = (context, identifier) => {
|
11
|
-
return identifier
|
12
|
-
.split(/([|! ])/)
|
13
|
-
.map(str => looksLikeAbsolutePath(str) ?
|
14
|
-
normalizePathSeparator(path.relative(context, str)) : str)
|
15
|
-
.join("");
|
16
|
-
};
|
17
|
-
|
18
|
-
exports.makePathsRelative = (context, identifier, cache) => {
|
19
|
-
if(!cache) return _makePathsRelative(context, identifier);
|
20
|
-
|
21
|
-
const relativePaths = cache.relativePaths || (cache.relativePaths = new Map());
|
22
|
-
|
23
|
-
let cachedResult;
|
24
|
-
let contextCache = relativePaths.get(context);
|
25
|
-
if(typeof contextCache === "undefined") {
|
26
|
-
relativePaths.set(context, contextCache = new Map());
|
27
|
-
} else {
|
28
|
-
cachedResult = contextCache.get(identifier);
|
29
|
-
}
|
30
|
-
|
31
|
-
if(typeof cachedResult !== "undefined") {
|
32
|
-
return cachedResult;
|
33
|
-
} else {
|
34
|
-
const relativePath = _makePathsRelative(context, identifier);
|
35
|
-
contextCache.set(identifier, relativePath);
|
36
|
-
return relativePath;
|
37
|
-
}
|
38
|
-
};
|
1
|
+
"use strict";
|
2
|
+
const path = require("path");
|
3
|
+
|
4
|
+
const looksLikeAbsolutePath = (maybeAbsolutePath) => {
|
5
|
+
return /^(?:[a-z]:\\|\/)/i.test(maybeAbsolutePath);
|
6
|
+
};
|
7
|
+
|
8
|
+
const normalizePathSeparator = (p) => p.replace(/\\/g, "/");
|
9
|
+
|
10
|
+
const _makePathsRelative = (context, identifier) => {
|
11
|
+
return identifier
|
12
|
+
.split(/([|! ])/)
|
13
|
+
.map(str => looksLikeAbsolutePath(str) ?
|
14
|
+
normalizePathSeparator(path.relative(context, str)) : str)
|
15
|
+
.join("");
|
16
|
+
};
|
17
|
+
|
18
|
+
exports.makePathsRelative = (context, identifier, cache) => {
|
19
|
+
if(!cache) return _makePathsRelative(context, identifier);
|
20
|
+
|
21
|
+
const relativePaths = cache.relativePaths || (cache.relativePaths = new Map());
|
22
|
+
|
23
|
+
let cachedResult;
|
24
|
+
let contextCache = relativePaths.get(context);
|
25
|
+
if(typeof contextCache === "undefined") {
|
26
|
+
relativePaths.set(context, contextCache = new Map());
|
27
|
+
} else {
|
28
|
+
cachedResult = contextCache.get(identifier);
|
29
|
+
}
|
30
|
+
|
31
|
+
if(typeof cachedResult !== "undefined") {
|
32
|
+
return cachedResult;
|
33
|
+
} else {
|
34
|
+
const relativePath = _makePathsRelative(context, identifier);
|
35
|
+
contextCache.set(identifier, relativePath);
|
36
|
+
return relativePath;
|
37
|
+
}
|
38
|
+
};
|
package/lib/validateSchema.js
CHANGED
@@ -1,66 +1,66 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Gajus Kuizinas @gajus
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const Ajv = require("ajv");
|
8
|
-
const ajv = new Ajv({
|
9
|
-
errorDataPath: "configuration",
|
10
|
-
allErrors: true,
|
11
|
-
verbose: true
|
12
|
-
});
|
13
|
-
require("ajv-keywords")(ajv, ["instanceof"]);
|
14
|
-
require("../schemas/ajv.absolutePath")(ajv);
|
15
|
-
|
16
|
-
function validateSchema(schema, options) {
|
17
|
-
if(Array.isArray(options)) {
|
18
|
-
const errors = options.map((options) => validateObject(schema, options));
|
19
|
-
errors.forEach((list, idx) => {
|
20
|
-
list.forEach(function applyPrefix(err) {
|
21
|
-
err.dataPath = `[${idx}]${err.dataPath}`;
|
22
|
-
if(err.children) {
|
23
|
-
err.children.forEach(applyPrefix);
|
24
|
-
}
|
25
|
-
});
|
26
|
-
});
|
27
|
-
return errors.reduce((arr, items) => {
|
28
|
-
return arr.concat(items);
|
29
|
-
}, []);
|
30
|
-
} else {
|
31
|
-
return validateObject(schema, options);
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
function validateObject(schema, options) {
|
36
|
-
const validate = ajv.compile(schema);
|
37
|
-
const valid = validate(options);
|
38
|
-
return valid ? [] : filterErrors(validate.errors);
|
39
|
-
}
|
40
|
-
|
41
|
-
function filterErrors(errors) {
|
42
|
-
let newErrors = [];
|
43
|
-
errors.forEach((err) => {
|
44
|
-
const dataPath = err.dataPath;
|
45
|
-
let children = [];
|
46
|
-
newErrors = newErrors.filter((oldError) => {
|
47
|
-
if(oldError.dataPath.includes(dataPath)) {
|
48
|
-
if(oldError.children) {
|
49
|
-
children = children.concat(oldError.children.slice(0));
|
50
|
-
}
|
51
|
-
oldError.children = undefined;
|
52
|
-
children.push(oldError);
|
53
|
-
return false;
|
54
|
-
}
|
55
|
-
return true;
|
56
|
-
});
|
57
|
-
if(children.length) {
|
58
|
-
err.children = children;
|
59
|
-
}
|
60
|
-
newErrors.push(err);
|
61
|
-
});
|
62
|
-
|
63
|
-
return newErrors;
|
64
|
-
}
|
65
|
-
|
66
|
-
module.exports = validateSchema;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Gajus Kuizinas @gajus
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const Ajv = require("ajv");
|
8
|
+
const ajv = new Ajv({
|
9
|
+
errorDataPath: "configuration",
|
10
|
+
allErrors: true,
|
11
|
+
verbose: true
|
12
|
+
});
|
13
|
+
require("ajv-keywords")(ajv, ["instanceof"]);
|
14
|
+
require("../schemas/ajv.absolutePath")(ajv);
|
15
|
+
|
16
|
+
function validateSchema(schema, options) {
|
17
|
+
if(Array.isArray(options)) {
|
18
|
+
const errors = options.map((options) => validateObject(schema, options));
|
19
|
+
errors.forEach((list, idx) => {
|
20
|
+
list.forEach(function applyPrefix(err) {
|
21
|
+
err.dataPath = `[${idx}]${err.dataPath}`;
|
22
|
+
if(err.children) {
|
23
|
+
err.children.forEach(applyPrefix);
|
24
|
+
}
|
25
|
+
});
|
26
|
+
});
|
27
|
+
return errors.reduce((arr, items) => {
|
28
|
+
return arr.concat(items);
|
29
|
+
}, []);
|
30
|
+
} else {
|
31
|
+
return validateObject(schema, options);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
function validateObject(schema, options) {
|
36
|
+
const validate = ajv.compile(schema);
|
37
|
+
const valid = validate(options);
|
38
|
+
return valid ? [] : filterErrors(validate.errors);
|
39
|
+
}
|
40
|
+
|
41
|
+
function filterErrors(errors) {
|
42
|
+
let newErrors = [];
|
43
|
+
errors.forEach((err) => {
|
44
|
+
const dataPath = err.dataPath;
|
45
|
+
let children = [];
|
46
|
+
newErrors = newErrors.filter((oldError) => {
|
47
|
+
if(oldError.dataPath.includes(dataPath)) {
|
48
|
+
if(oldError.children) {
|
49
|
+
children = children.concat(oldError.children.slice(0));
|
50
|
+
}
|
51
|
+
oldError.children = undefined;
|
52
|
+
children.push(oldError);
|
53
|
+
return false;
|
54
|
+
}
|
55
|
+
return true;
|
56
|
+
});
|
57
|
+
if(children.length) {
|
58
|
+
err.children = children;
|
59
|
+
}
|
60
|
+
newErrors.push(err);
|
61
|
+
});
|
62
|
+
|
63
|
+
return newErrors;
|
64
|
+
}
|
65
|
+
|
66
|
+
module.exports = validateSchema;
|
@@ -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
|
-
class WebEnvironmentPlugin {
|
8
|
-
constructor(inputFileSystem, outputFileSystem) {
|
9
|
-
this.inputFileSystem = inputFileSystem;
|
10
|
-
this.outputFileSystem = outputFileSystem;
|
11
|
-
}
|
12
|
-
|
13
|
-
apply(compiler) {
|
14
|
-
compiler.outputFileSystem = this.outputFileSystem;
|
15
|
-
}
|
16
|
-
}
|
17
|
-
|
18
|
-
module.exports = WebEnvironmentPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class WebEnvironmentPlugin {
|
8
|
+
constructor(inputFileSystem, outputFileSystem) {
|
9
|
+
this.inputFileSystem = inputFileSystem;
|
10
|
+
this.outputFileSystem = outputFileSystem;
|
11
|
+
}
|
12
|
+
|
13
|
+
apply(compiler) {
|
14
|
+
compiler.outputFileSystem = this.outputFileSystem;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
module.exports = WebEnvironmentPlugin;
|
package/lib/webpack.js
CHANGED
@@ -73,6 +73,7 @@ exportPlugins(exports, {
|
|
73
73
|
"DefinePlugin": () => require("./DefinePlugin"),
|
74
74
|
"NormalModuleReplacementPlugin": () => require("./NormalModuleReplacementPlugin"),
|
75
75
|
"ContextReplacementPlugin": () => require("./ContextReplacementPlugin"),
|
76
|
+
"ContextExclusionPlugin": () => require("./ContextExclusionPlugin"),
|
76
77
|
"IgnorePlugin": () => require("./IgnorePlugin"),
|
77
78
|
"WatchIgnorePlugin": () => require("./WatchIgnorePlugin"),
|
78
79
|
"BannerPlugin": () => require("./BannerPlugin"),
|