webpack 3.8.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/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/AutomaticPrefetchPlugin.js +36 -36
- package/lib/BasicEvaluatedExpression.js +203 -203
- package/lib/CaseSensitiveModulesWarning.js +49 -49
- package/lib/ChunkRenderError.js +24 -24
- package/lib/ChunkTemplate.js +36 -36
- package/lib/CompatibilityPlugin.js +57 -57
- package/lib/Compiler.js +523 -523
- package/lib/ConstPlugin.js +60 -60
- package/lib/ContextModule.js +431 -431
- package/lib/ContextReplacementPlugin.js +111 -111
- package/lib/DefinePlugin.js +123 -123
- package/lib/DelegatedModule.js +98 -98
- 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/ExternalModuleFactoryPlugin.js +91 -91
- package/lib/ExternalsPlugin.js +21 -21
- package/lib/FlagDependencyExportsPlugin.js +101 -101
- package/lib/FunctionModulePlugin.js +24 -24
- 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/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/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/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/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/AMDPlugin.js +119 -119
- 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/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
- package/lib/dependencies/ConstDependency.js +32 -32
- 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/HarmonyExportHeaderDependency.js +28 -28
- 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/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/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/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/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 +16 -0
@@ -1,129 +1,129 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const OptionsDefaulter = require("./OptionsDefaulter");
|
8
|
-
const Template = require("./Template");
|
9
|
-
|
10
|
-
class WebpackOptionsDefaulter extends OptionsDefaulter {
|
11
|
-
constructor() {
|
12
|
-
super();
|
13
|
-
this.set("devtool", false);
|
14
|
-
this.set("cache", true);
|
15
|
-
|
16
|
-
this.set("context", process.cwd());
|
17
|
-
this.set("target", "web");
|
18
|
-
|
19
|
-
this.set("module", "call", value => Object.assign({}, value));
|
20
|
-
this.set("module.unknownContextRequest", ".");
|
21
|
-
this.set("module.unknownContextRegExp", false);
|
22
|
-
this.set("module.unknownContextRecursive", true);
|
23
|
-
this.set("module.unknownContextCritical", true);
|
24
|
-
this.set("module.exprContextRequest", ".");
|
25
|
-
this.set("module.exprContextRegExp", false);
|
26
|
-
this.set("module.exprContextRecursive", true);
|
27
|
-
this.set("module.exprContextCritical", true);
|
28
|
-
this.set("module.wrappedContextRegExp", /.*/);
|
29
|
-
this.set("module.wrappedContextRecursive", true);
|
30
|
-
this.set("module.wrappedContextCritical", false);
|
31
|
-
this.set("module.strictExportPresence", false);
|
32
|
-
this.set("module.strictThisContextOnImports", false);
|
33
|
-
this.set("module.unsafeCache", true);
|
34
|
-
|
35
|
-
this.set("output", "call", (value, options) => {
|
36
|
-
if(typeof value === "string") {
|
37
|
-
return {
|
38
|
-
filename: value
|
39
|
-
};
|
40
|
-
} else if(typeof value !== "object") {
|
41
|
-
return {};
|
42
|
-
} else {
|
43
|
-
return Object.assign({}, value);
|
44
|
-
}
|
45
|
-
});
|
46
|
-
this.set("output.filename", "[name].js");
|
47
|
-
this.set("output.chunkFilename", "make", (options) => {
|
48
|
-
const filename = options.output.filename;
|
49
|
-
return filename.indexOf("[name]") >= 0 ? filename.replace("[name]", "[id]") : "[id]." + filename;
|
50
|
-
});
|
51
|
-
this.set("output.library", "");
|
52
|
-
this.set("output.hotUpdateFunction", "make", (options) => {
|
53
|
-
return Template.toIdentifier("webpackHotUpdate" + options.output.library);
|
54
|
-
});
|
55
|
-
this.set("output.jsonpFunction", "make", (options) => {
|
56
|
-
return Template.toIdentifier("webpackJsonp" + options.output.library);
|
57
|
-
});
|
58
|
-
this.set("output.libraryTarget", "var");
|
59
|
-
this.set("output.path", process.cwd());
|
60
|
-
this.set("output.sourceMapFilename", "[file].map[query]");
|
61
|
-
this.set("output.hotUpdateChunkFilename", "[id].[hash].hot-update.js");
|
62
|
-
this.set("output.hotUpdateMainFilename", "[hash].hot-update.json");
|
63
|
-
this.set("output.crossOriginLoading", false);
|
64
|
-
this.set("output.chunkLoadTimeout", 120000);
|
65
|
-
this.set("output.hashFunction", "md5");
|
66
|
-
this.set("output.hashDigest", "hex");
|
67
|
-
this.set("output.hashDigestLength", 20);
|
68
|
-
this.set("output.devtoolLineToLine", false);
|
69
|
-
this.set("output.strictModuleExceptionHandling", false);
|
70
|
-
|
71
|
-
this.set("node", "call", value => {
|
72
|
-
if(typeof value === "boolean") {
|
73
|
-
return value;
|
74
|
-
} else {
|
75
|
-
return Object.assign({}, value);
|
76
|
-
}
|
77
|
-
});
|
78
|
-
this.set("node.console", false);
|
79
|
-
this.set("node.process", true);
|
80
|
-
this.set("node.global", true);
|
81
|
-
this.set("node.Buffer", true);
|
82
|
-
this.set("node.setImmediate", true);
|
83
|
-
this.set("node.__filename", "mock");
|
84
|
-
this.set("node.__dirname", "mock");
|
85
|
-
|
86
|
-
this.set("performance", "call", value => {
|
87
|
-
if(typeof value === "boolean") {
|
88
|
-
return value;
|
89
|
-
} else {
|
90
|
-
return Object.assign({}, value);
|
91
|
-
}
|
92
|
-
});
|
93
|
-
this.set("performance.maxAssetSize", 250000);
|
94
|
-
this.set("performance.maxEntrypointSize", 250000);
|
95
|
-
this.set("performance.hints", false);
|
96
|
-
|
97
|
-
this.set("resolve", "call", value => Object.assign({}, value));
|
98
|
-
this.set("resolve.unsafeCache", true);
|
99
|
-
this.set("resolve.modules", ["node_modules"]);
|
100
|
-
this.set("resolve.extensions", [".js", ".json"]);
|
101
|
-
this.set("resolve.mainFiles", ["index"]);
|
102
|
-
this.set("resolve.aliasFields", "make", (options) => {
|
103
|
-
if(options.target === "web" || options.target === "webworker")
|
104
|
-
return ["browser"];
|
105
|
-
else
|
106
|
-
return [];
|
107
|
-
});
|
108
|
-
this.set("resolve.mainFields", "make", (options) => {
|
109
|
-
if(options.target === "web" || options.target === "webworker")
|
110
|
-
return ["browser", "module", "main"];
|
111
|
-
else
|
112
|
-
return ["module", "main"];
|
113
|
-
});
|
114
|
-
this.set("resolve.cacheWithContext", "make", (options) => {
|
115
|
-
return Array.isArray(options.resolve.plugins) && options.resolve.plugins.length > 0;
|
116
|
-
});
|
117
|
-
|
118
|
-
this.set("resolveLoader", "call", value => Object.assign({}, value));
|
119
|
-
this.set("resolveLoader.unsafeCache", true);
|
120
|
-
this.set("resolveLoader.mainFields", ["loader", "main"]);
|
121
|
-
this.set("resolveLoader.extensions", [".js", ".json"]);
|
122
|
-
this.set("resolveLoader.mainFiles", ["index"]);
|
123
|
-
this.set("resolveLoader.cacheWithContext", "make", (options) => {
|
124
|
-
return Array.isArray(options.resolveLoader.plugins) && options.resolveLoader.plugins.length > 0;
|
125
|
-
});
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
|
-
module.exports = WebpackOptionsDefaulter;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const OptionsDefaulter = require("./OptionsDefaulter");
|
8
|
+
const Template = require("./Template");
|
9
|
+
|
10
|
+
class WebpackOptionsDefaulter extends OptionsDefaulter {
|
11
|
+
constructor() {
|
12
|
+
super();
|
13
|
+
this.set("devtool", false);
|
14
|
+
this.set("cache", true);
|
15
|
+
|
16
|
+
this.set("context", process.cwd());
|
17
|
+
this.set("target", "web");
|
18
|
+
|
19
|
+
this.set("module", "call", value => Object.assign({}, value));
|
20
|
+
this.set("module.unknownContextRequest", ".");
|
21
|
+
this.set("module.unknownContextRegExp", false);
|
22
|
+
this.set("module.unknownContextRecursive", true);
|
23
|
+
this.set("module.unknownContextCritical", true);
|
24
|
+
this.set("module.exprContextRequest", ".");
|
25
|
+
this.set("module.exprContextRegExp", false);
|
26
|
+
this.set("module.exprContextRecursive", true);
|
27
|
+
this.set("module.exprContextCritical", true);
|
28
|
+
this.set("module.wrappedContextRegExp", /.*/);
|
29
|
+
this.set("module.wrappedContextRecursive", true);
|
30
|
+
this.set("module.wrappedContextCritical", false);
|
31
|
+
this.set("module.strictExportPresence", false);
|
32
|
+
this.set("module.strictThisContextOnImports", false);
|
33
|
+
this.set("module.unsafeCache", true);
|
34
|
+
|
35
|
+
this.set("output", "call", (value, options) => {
|
36
|
+
if(typeof value === "string") {
|
37
|
+
return {
|
38
|
+
filename: value
|
39
|
+
};
|
40
|
+
} else if(typeof value !== "object") {
|
41
|
+
return {};
|
42
|
+
} else {
|
43
|
+
return Object.assign({}, value);
|
44
|
+
}
|
45
|
+
});
|
46
|
+
this.set("output.filename", "[name].js");
|
47
|
+
this.set("output.chunkFilename", "make", (options) => {
|
48
|
+
const filename = options.output.filename;
|
49
|
+
return filename.indexOf("[name]") >= 0 ? filename.replace("[name]", "[id]") : "[id]." + filename;
|
50
|
+
});
|
51
|
+
this.set("output.library", "");
|
52
|
+
this.set("output.hotUpdateFunction", "make", (options) => {
|
53
|
+
return Template.toIdentifier("webpackHotUpdate" + options.output.library);
|
54
|
+
});
|
55
|
+
this.set("output.jsonpFunction", "make", (options) => {
|
56
|
+
return Template.toIdentifier("webpackJsonp" + options.output.library);
|
57
|
+
});
|
58
|
+
this.set("output.libraryTarget", "var");
|
59
|
+
this.set("output.path", process.cwd());
|
60
|
+
this.set("output.sourceMapFilename", "[file].map[query]");
|
61
|
+
this.set("output.hotUpdateChunkFilename", "[id].[hash].hot-update.js");
|
62
|
+
this.set("output.hotUpdateMainFilename", "[hash].hot-update.json");
|
63
|
+
this.set("output.crossOriginLoading", false);
|
64
|
+
this.set("output.chunkLoadTimeout", 120000);
|
65
|
+
this.set("output.hashFunction", "md5");
|
66
|
+
this.set("output.hashDigest", "hex");
|
67
|
+
this.set("output.hashDigestLength", 20);
|
68
|
+
this.set("output.devtoolLineToLine", false);
|
69
|
+
this.set("output.strictModuleExceptionHandling", false);
|
70
|
+
|
71
|
+
this.set("node", "call", value => {
|
72
|
+
if(typeof value === "boolean") {
|
73
|
+
return value;
|
74
|
+
} else {
|
75
|
+
return Object.assign({}, value);
|
76
|
+
}
|
77
|
+
});
|
78
|
+
this.set("node.console", false);
|
79
|
+
this.set("node.process", true);
|
80
|
+
this.set("node.global", true);
|
81
|
+
this.set("node.Buffer", true);
|
82
|
+
this.set("node.setImmediate", true);
|
83
|
+
this.set("node.__filename", "mock");
|
84
|
+
this.set("node.__dirname", "mock");
|
85
|
+
|
86
|
+
this.set("performance", "call", value => {
|
87
|
+
if(typeof value === "boolean") {
|
88
|
+
return value;
|
89
|
+
} else {
|
90
|
+
return Object.assign({}, value);
|
91
|
+
}
|
92
|
+
});
|
93
|
+
this.set("performance.maxAssetSize", 250000);
|
94
|
+
this.set("performance.maxEntrypointSize", 250000);
|
95
|
+
this.set("performance.hints", false);
|
96
|
+
|
97
|
+
this.set("resolve", "call", value => Object.assign({}, value));
|
98
|
+
this.set("resolve.unsafeCache", true);
|
99
|
+
this.set("resolve.modules", ["node_modules"]);
|
100
|
+
this.set("resolve.extensions", [".js", ".json"]);
|
101
|
+
this.set("resolve.mainFiles", ["index"]);
|
102
|
+
this.set("resolve.aliasFields", "make", (options) => {
|
103
|
+
if(options.target === "web" || options.target === "webworker")
|
104
|
+
return ["browser"];
|
105
|
+
else
|
106
|
+
return [];
|
107
|
+
});
|
108
|
+
this.set("resolve.mainFields", "make", (options) => {
|
109
|
+
if(options.target === "web" || options.target === "webworker")
|
110
|
+
return ["browser", "module", "main"];
|
111
|
+
else
|
112
|
+
return ["module", "main"];
|
113
|
+
});
|
114
|
+
this.set("resolve.cacheWithContext", "make", (options) => {
|
115
|
+
return Array.isArray(options.resolve.plugins) && options.resolve.plugins.length > 0;
|
116
|
+
});
|
117
|
+
|
118
|
+
this.set("resolveLoader", "call", value => Object.assign({}, value));
|
119
|
+
this.set("resolveLoader.unsafeCache", true);
|
120
|
+
this.set("resolveLoader.mainFields", ["loader", "main"]);
|
121
|
+
this.set("resolveLoader.extensions", [".js", ".json"]);
|
122
|
+
this.set("resolveLoader.mainFiles", ["index"]);
|
123
|
+
this.set("resolveLoader.cacheWithContext", "make", (options) => {
|
124
|
+
return Array.isArray(options.resolveLoader.plugins) && options.resolveLoader.plugins.length > 0;
|
125
|
+
});
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
module.exports = WebpackOptionsDefaulter;
|
@@ -1,196 +1,196 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Gajus Kuizinas @gajus
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const WebpackError = require("./WebpackError");
|
8
|
-
const webpackOptionsSchema = require("../schemas/webpackOptionsSchema.json");
|
9
|
-
|
10
|
-
const getSchemaPart = (path, parents, additionalPath) => {
|
11
|
-
parents = parents || 0;
|
12
|
-
path = path.split("/");
|
13
|
-
path = path.slice(0, path.length - parents);
|
14
|
-
if(additionalPath) {
|
15
|
-
additionalPath = additionalPath.split("/");
|
16
|
-
path = path.concat(additionalPath);
|
17
|
-
}
|
18
|
-
let schemaPart = webpackOptionsSchema;
|
19
|
-
for(let i = 1; i < path.length; i++) {
|
20
|
-
const inner = schemaPart[path[i]];
|
21
|
-
if(inner)
|
22
|
-
schemaPart = inner;
|
23
|
-
}
|
24
|
-
return schemaPart;
|
25
|
-
};
|
26
|
-
|
27
|
-
const getSchemaPartText = (schemaPart, additionalPath) => {
|
28
|
-
if(additionalPath) {
|
29
|
-
for(let i = 0; i < additionalPath.length; i++) {
|
30
|
-
const inner = schemaPart[additionalPath[i]];
|
31
|
-
if(inner)
|
32
|
-
schemaPart = inner;
|
33
|
-
}
|
34
|
-
}
|
35
|
-
while(schemaPart.$ref) schemaPart = getSchemaPart(schemaPart.$ref);
|
36
|
-
let schemaText = WebpackOptionsValidationError.formatSchema(schemaPart);
|
37
|
-
if(schemaPart.description)
|
38
|
-
schemaText += `\n${schemaPart.description}`;
|
39
|
-
return schemaText;
|
40
|
-
};
|
41
|
-
|
42
|
-
const indent = (str, prefix, firstLine) => {
|
43
|
-
if(firstLine) {
|
44
|
-
return prefix + str.replace(/\n(?!$)/g, "\n" + prefix);
|
45
|
-
} else {
|
46
|
-
return str.replace(/\n(?!$)/g, `\n${prefix}`);
|
47
|
-
}
|
48
|
-
};
|
49
|
-
|
50
|
-
class WebpackOptionsValidationError extends WebpackError {
|
51
|
-
constructor(validationErrors) {
|
52
|
-
super();
|
53
|
-
|
54
|
-
this.name = "WebpackOptionsValidationError";
|
55
|
-
this.message = "Invalid configuration object. " +
|
56
|
-
"Webpack has been initialised using a configuration object that does not match the API schema.\n" +
|
57
|
-
validationErrors.map(err => " - " + indent(WebpackOptionsValidationError.formatValidationError(err), " ", false)).join("\n");
|
58
|
-
this.validationErrors = validationErrors;
|
59
|
-
|
60
|
-
Error.captureStackTrace(this, this.constructor);
|
61
|
-
}
|
62
|
-
|
63
|
-
static formatSchema(schema, prevSchemas) {
|
64
|
-
prevSchemas = prevSchemas || [];
|
65
|
-
|
66
|
-
const formatInnerSchema = (innerSchema, addSelf) => {
|
67
|
-
if(!addSelf) return WebpackOptionsValidationError.formatSchema(innerSchema, prevSchemas);
|
68
|
-
if(prevSchemas.indexOf(innerSchema) >= 0) return "(recursive)";
|
69
|
-
return WebpackOptionsValidationError.formatSchema(innerSchema, prevSchemas.concat(schema));
|
70
|
-
};
|
71
|
-
|
72
|
-
if(schema.type === "string") {
|
73
|
-
if(schema.minLength === 1)
|
74
|
-
return "non-empty string";
|
75
|
-
else if(schema.minLength > 1)
|
76
|
-
return `string (min length ${schema.minLength})`;
|
77
|
-
return "string";
|
78
|
-
} else if(schema.type === "boolean") {
|
79
|
-
return "boolean";
|
80
|
-
} else if(schema.type === "number") {
|
81
|
-
return "number";
|
82
|
-
} else if(schema.type === "object") {
|
83
|
-
if(schema.properties) {
|
84
|
-
const required = schema.required || [];
|
85
|
-
return `object { ${Object.keys(schema.properties).map(property => {
|
86
|
-
if(required.indexOf(property) < 0) return property + "?";
|
87
|
-
return property;
|
88
|
-
}).concat(schema.additionalProperties ? ["..."] : []).join(", ")} }`;
|
89
|
-
}
|
90
|
-
if(schema.additionalProperties) {
|
91
|
-
return `object { <key>: ${formatInnerSchema(schema.additionalProperties)} }`;
|
92
|
-
}
|
93
|
-
return "object";
|
94
|
-
} else if(schema.type === "array") {
|
95
|
-
return `[${formatInnerSchema(schema.items)}]`;
|
96
|
-
}
|
97
|
-
|
98
|
-
switch(schema.instanceof) {
|
99
|
-
case "Function":
|
100
|
-
return "function";
|
101
|
-
case "RegExp":
|
102
|
-
return "RegExp";
|
103
|
-
}
|
104
|
-
if(schema.$ref) return formatInnerSchema(getSchemaPart(schema.$ref), true);
|
105
|
-
if(schema.allOf) return schema.allOf.map(formatInnerSchema).join(" & ");
|
106
|
-
if(schema.oneOf) return schema.oneOf.map(formatInnerSchema).join(" | ");
|
107
|
-
if(schema.anyOf) return schema.anyOf.map(formatInnerSchema).join(" | ");
|
108
|
-
if(schema.enum) return schema.enum.map(item => JSON.stringify(item)).join(" | ");
|
109
|
-
return JSON.stringify(schema, 0, 2);
|
110
|
-
}
|
111
|
-
|
112
|
-
static formatValidationError(err) {
|
113
|
-
const dataPath = `configuration${err.dataPath}`;
|
114
|
-
if(err.keyword === "additionalProperties") {
|
115
|
-
const baseMessage = `${dataPath} has an unknown property '${err.params.additionalProperty}'. These properties are valid:\n${getSchemaPartText(err.parentSchema)}`;
|
116
|
-
if(!err.dataPath) {
|
117
|
-
switch(err.params.additionalProperty) {
|
118
|
-
case "debug":
|
119
|
-
return `${baseMessage}\n` +
|
120
|
-
"The 'debug' property was removed in webpack 2.\n" +
|
121
|
-
"Loaders should be updated to allow passing this option via loader options in module.rules.\n" +
|
122
|
-
"Until loaders are updated one can use the LoaderOptionsPlugin to switch loaders into debug mode:\n" +
|
123
|
-
"plugins: [\n" +
|
124
|
-
" new webpack.LoaderOptionsPlugin({\n" +
|
125
|
-
" debug: true\n" +
|
126
|
-
" })\n" +
|
127
|
-
"]";
|
128
|
-
}
|
129
|
-
return baseMessage + "\n" +
|
130
|
-
"For typos: please correct them.\n" +
|
131
|
-
"For loader options: webpack 2 no longer allows custom properties in configuration.\n" +
|
132
|
-
" Loaders should be updated to allow passing options via loader options in module.rules.\n" +
|
133
|
-
" Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader:\n" +
|
134
|
-
" plugins: [\n" +
|
135
|
-
" new webpack.LoaderOptionsPlugin({\n" +
|
136
|
-
" // test: /\\.xxx$/, // may apply this only for some modules\n" +
|
137
|
-
" options: {\n" +
|
138
|
-
` ${err.params.additionalProperty}: ...\n` +
|
139
|
-
" }\n" +
|
140
|
-
" })\n" +
|
141
|
-
" ]";
|
142
|
-
}
|
143
|
-
return baseMessage;
|
144
|
-
} else if(err.keyword === "oneOf" || err.keyword === "anyOf") {
|
145
|
-
if(err.children && err.children.length > 0) {
|
146
|
-
return `${dataPath} should be one of these:\n${getSchemaPartText(err.parentSchema)}\n` +
|
147
|
-
`Details:\n${err.children.map(err => " * " + indent(WebpackOptionsValidationError.formatValidationError(err), " ", false)).join("\n")}`;
|
148
|
-
}
|
149
|
-
return `${dataPath} should be one of these:\n${getSchemaPartText(err.parentSchema)}`;
|
150
|
-
|
151
|
-
} else if(err.keyword === "enum") {
|
152
|
-
if(err.parentSchema && err.parentSchema.enum && err.parentSchema.enum.length === 1) {
|
153
|
-
return `${dataPath} should be ${getSchemaPartText(err.parentSchema)}`;
|
154
|
-
}
|
155
|
-
return `${dataPath} should be one of these:\n${getSchemaPartText(err.parentSchema)}`;
|
156
|
-
} else if(err.keyword === "allOf") {
|
157
|
-
return `${dataPath} should be:\n${getSchemaPartText(err.parentSchema)}`;
|
158
|
-
} else if(err.keyword === "type") {
|
159
|
-
switch(err.params.type) {
|
160
|
-
case "object":
|
161
|
-
return `${dataPath} should be an object.`;
|
162
|
-
case "string":
|
163
|
-
return `${dataPath} should be a string.`;
|
164
|
-
case "boolean":
|
165
|
-
return `${dataPath} should be a boolean.`;
|
166
|
-
case "number":
|
167
|
-
return `${dataPath} should be a number.`;
|
168
|
-
case "array":
|
169
|
-
return `${dataPath} should be an array:\n${getSchemaPartText(err.parentSchema)}`;
|
170
|
-
}
|
171
|
-
return `${dataPath} should be ${err.params.type}:\n${getSchemaPartText(err.parentSchema)}`;
|
172
|
-
} else if(err.keyword === "instanceof") {
|
173
|
-
return `${dataPath} should be an instance of ${getSchemaPartText(err.parentSchema)}.`;
|
174
|
-
} else if(err.keyword === "required") {
|
175
|
-
const missingProperty = err.params.missingProperty.replace(/^\./, "");
|
176
|
-
return `${dataPath} misses the property '${missingProperty}'.\n${getSchemaPartText(err.parentSchema, ["properties", missingProperty])}`;
|
177
|
-
} else if(err.keyword === "minLength" || err.keyword === "minItems") {
|
178
|
-
if(err.params.limit === 1)
|
179
|
-
return `${dataPath} should not be empty.`;
|
180
|
-
else
|
181
|
-
return `${dataPath} ${err.message}`;
|
182
|
-
} else if(err.keyword === "absolutePath") {
|
183
|
-
const baseMessage = `${dataPath}: ${err.message}`;
|
184
|
-
if(dataPath === "configuration.output.filename") {
|
185
|
-
return `${baseMessage}\n` +
|
186
|
-
"Please use output.path to specify absolute path and output.filename for the file name.";
|
187
|
-
}
|
188
|
-
return baseMessage;
|
189
|
-
} else {
|
190
|
-
// eslint-disable-line no-fallthrough
|
191
|
-
return `${dataPath} ${err.message} (${JSON.stringify(err, 0, 2)}).\n${getSchemaPartText(err.parentSchema)}`;
|
192
|
-
}
|
193
|
-
}
|
194
|
-
}
|
195
|
-
|
196
|
-
module.exports = WebpackOptionsValidationError;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Gajus Kuizinas @gajus
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const WebpackError = require("./WebpackError");
|
8
|
+
const webpackOptionsSchema = require("../schemas/webpackOptionsSchema.json");
|
9
|
+
|
10
|
+
const getSchemaPart = (path, parents, additionalPath) => {
|
11
|
+
parents = parents || 0;
|
12
|
+
path = path.split("/");
|
13
|
+
path = path.slice(0, path.length - parents);
|
14
|
+
if(additionalPath) {
|
15
|
+
additionalPath = additionalPath.split("/");
|
16
|
+
path = path.concat(additionalPath);
|
17
|
+
}
|
18
|
+
let schemaPart = webpackOptionsSchema;
|
19
|
+
for(let i = 1; i < path.length; i++) {
|
20
|
+
const inner = schemaPart[path[i]];
|
21
|
+
if(inner)
|
22
|
+
schemaPart = inner;
|
23
|
+
}
|
24
|
+
return schemaPart;
|
25
|
+
};
|
26
|
+
|
27
|
+
const getSchemaPartText = (schemaPart, additionalPath) => {
|
28
|
+
if(additionalPath) {
|
29
|
+
for(let i = 0; i < additionalPath.length; i++) {
|
30
|
+
const inner = schemaPart[additionalPath[i]];
|
31
|
+
if(inner)
|
32
|
+
schemaPart = inner;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
while(schemaPart.$ref) schemaPart = getSchemaPart(schemaPart.$ref);
|
36
|
+
let schemaText = WebpackOptionsValidationError.formatSchema(schemaPart);
|
37
|
+
if(schemaPart.description)
|
38
|
+
schemaText += `\n${schemaPart.description}`;
|
39
|
+
return schemaText;
|
40
|
+
};
|
41
|
+
|
42
|
+
const indent = (str, prefix, firstLine) => {
|
43
|
+
if(firstLine) {
|
44
|
+
return prefix + str.replace(/\n(?!$)/g, "\n" + prefix);
|
45
|
+
} else {
|
46
|
+
return str.replace(/\n(?!$)/g, `\n${prefix}`);
|
47
|
+
}
|
48
|
+
};
|
49
|
+
|
50
|
+
class WebpackOptionsValidationError extends WebpackError {
|
51
|
+
constructor(validationErrors) {
|
52
|
+
super();
|
53
|
+
|
54
|
+
this.name = "WebpackOptionsValidationError";
|
55
|
+
this.message = "Invalid configuration object. " +
|
56
|
+
"Webpack has been initialised using a configuration object that does not match the API schema.\n" +
|
57
|
+
validationErrors.map(err => " - " + indent(WebpackOptionsValidationError.formatValidationError(err), " ", false)).join("\n");
|
58
|
+
this.validationErrors = validationErrors;
|
59
|
+
|
60
|
+
Error.captureStackTrace(this, this.constructor);
|
61
|
+
}
|
62
|
+
|
63
|
+
static formatSchema(schema, prevSchemas) {
|
64
|
+
prevSchemas = prevSchemas || [];
|
65
|
+
|
66
|
+
const formatInnerSchema = (innerSchema, addSelf) => {
|
67
|
+
if(!addSelf) return WebpackOptionsValidationError.formatSchema(innerSchema, prevSchemas);
|
68
|
+
if(prevSchemas.indexOf(innerSchema) >= 0) return "(recursive)";
|
69
|
+
return WebpackOptionsValidationError.formatSchema(innerSchema, prevSchemas.concat(schema));
|
70
|
+
};
|
71
|
+
|
72
|
+
if(schema.type === "string") {
|
73
|
+
if(schema.minLength === 1)
|
74
|
+
return "non-empty string";
|
75
|
+
else if(schema.minLength > 1)
|
76
|
+
return `string (min length ${schema.minLength})`;
|
77
|
+
return "string";
|
78
|
+
} else if(schema.type === "boolean") {
|
79
|
+
return "boolean";
|
80
|
+
} else if(schema.type === "number") {
|
81
|
+
return "number";
|
82
|
+
} else if(schema.type === "object") {
|
83
|
+
if(schema.properties) {
|
84
|
+
const required = schema.required || [];
|
85
|
+
return `object { ${Object.keys(schema.properties).map(property => {
|
86
|
+
if(required.indexOf(property) < 0) return property + "?";
|
87
|
+
return property;
|
88
|
+
}).concat(schema.additionalProperties ? ["..."] : []).join(", ")} }`;
|
89
|
+
}
|
90
|
+
if(schema.additionalProperties) {
|
91
|
+
return `object { <key>: ${formatInnerSchema(schema.additionalProperties)} }`;
|
92
|
+
}
|
93
|
+
return "object";
|
94
|
+
} else if(schema.type === "array") {
|
95
|
+
return `[${formatInnerSchema(schema.items)}]`;
|
96
|
+
}
|
97
|
+
|
98
|
+
switch(schema.instanceof) {
|
99
|
+
case "Function":
|
100
|
+
return "function";
|
101
|
+
case "RegExp":
|
102
|
+
return "RegExp";
|
103
|
+
}
|
104
|
+
if(schema.$ref) return formatInnerSchema(getSchemaPart(schema.$ref), true);
|
105
|
+
if(schema.allOf) return schema.allOf.map(formatInnerSchema).join(" & ");
|
106
|
+
if(schema.oneOf) return schema.oneOf.map(formatInnerSchema).join(" | ");
|
107
|
+
if(schema.anyOf) return schema.anyOf.map(formatInnerSchema).join(" | ");
|
108
|
+
if(schema.enum) return schema.enum.map(item => JSON.stringify(item)).join(" | ");
|
109
|
+
return JSON.stringify(schema, 0, 2);
|
110
|
+
}
|
111
|
+
|
112
|
+
static formatValidationError(err) {
|
113
|
+
const dataPath = `configuration${err.dataPath}`;
|
114
|
+
if(err.keyword === "additionalProperties") {
|
115
|
+
const baseMessage = `${dataPath} has an unknown property '${err.params.additionalProperty}'. These properties are valid:\n${getSchemaPartText(err.parentSchema)}`;
|
116
|
+
if(!err.dataPath) {
|
117
|
+
switch(err.params.additionalProperty) {
|
118
|
+
case "debug":
|
119
|
+
return `${baseMessage}\n` +
|
120
|
+
"The 'debug' property was removed in webpack 2.\n" +
|
121
|
+
"Loaders should be updated to allow passing this option via loader options in module.rules.\n" +
|
122
|
+
"Until loaders are updated one can use the LoaderOptionsPlugin to switch loaders into debug mode:\n" +
|
123
|
+
"plugins: [\n" +
|
124
|
+
" new webpack.LoaderOptionsPlugin({\n" +
|
125
|
+
" debug: true\n" +
|
126
|
+
" })\n" +
|
127
|
+
"]";
|
128
|
+
}
|
129
|
+
return baseMessage + "\n" +
|
130
|
+
"For typos: please correct them.\n" +
|
131
|
+
"For loader options: webpack 2 no longer allows custom properties in configuration.\n" +
|
132
|
+
" Loaders should be updated to allow passing options via loader options in module.rules.\n" +
|
133
|
+
" Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader:\n" +
|
134
|
+
" plugins: [\n" +
|
135
|
+
" new webpack.LoaderOptionsPlugin({\n" +
|
136
|
+
" // test: /\\.xxx$/, // may apply this only for some modules\n" +
|
137
|
+
" options: {\n" +
|
138
|
+
` ${err.params.additionalProperty}: ...\n` +
|
139
|
+
" }\n" +
|
140
|
+
" })\n" +
|
141
|
+
" ]";
|
142
|
+
}
|
143
|
+
return baseMessage;
|
144
|
+
} else if(err.keyword === "oneOf" || err.keyword === "anyOf") {
|
145
|
+
if(err.children && err.children.length > 0) {
|
146
|
+
return `${dataPath} should be one of these:\n${getSchemaPartText(err.parentSchema)}\n` +
|
147
|
+
`Details:\n${err.children.map(err => " * " + indent(WebpackOptionsValidationError.formatValidationError(err), " ", false)).join("\n")}`;
|
148
|
+
}
|
149
|
+
return `${dataPath} should be one of these:\n${getSchemaPartText(err.parentSchema)}`;
|
150
|
+
|
151
|
+
} else if(err.keyword === "enum") {
|
152
|
+
if(err.parentSchema && err.parentSchema.enum && err.parentSchema.enum.length === 1) {
|
153
|
+
return `${dataPath} should be ${getSchemaPartText(err.parentSchema)}`;
|
154
|
+
}
|
155
|
+
return `${dataPath} should be one of these:\n${getSchemaPartText(err.parentSchema)}`;
|
156
|
+
} else if(err.keyword === "allOf") {
|
157
|
+
return `${dataPath} should be:\n${getSchemaPartText(err.parentSchema)}`;
|
158
|
+
} else if(err.keyword === "type") {
|
159
|
+
switch(err.params.type) {
|
160
|
+
case "object":
|
161
|
+
return `${dataPath} should be an object.`;
|
162
|
+
case "string":
|
163
|
+
return `${dataPath} should be a string.`;
|
164
|
+
case "boolean":
|
165
|
+
return `${dataPath} should be a boolean.`;
|
166
|
+
case "number":
|
167
|
+
return `${dataPath} should be a number.`;
|
168
|
+
case "array":
|
169
|
+
return `${dataPath} should be an array:\n${getSchemaPartText(err.parentSchema)}`;
|
170
|
+
}
|
171
|
+
return `${dataPath} should be ${err.params.type}:\n${getSchemaPartText(err.parentSchema)}`;
|
172
|
+
} else if(err.keyword === "instanceof") {
|
173
|
+
return `${dataPath} should be an instance of ${getSchemaPartText(err.parentSchema)}.`;
|
174
|
+
} else if(err.keyword === "required") {
|
175
|
+
const missingProperty = err.params.missingProperty.replace(/^\./, "");
|
176
|
+
return `${dataPath} misses the property '${missingProperty}'.\n${getSchemaPartText(err.parentSchema, ["properties", missingProperty])}`;
|
177
|
+
} else if(err.keyword === "minLength" || err.keyword === "minItems") {
|
178
|
+
if(err.params.limit === 1)
|
179
|
+
return `${dataPath} should not be empty.`;
|
180
|
+
else
|
181
|
+
return `${dataPath} ${err.message}`;
|
182
|
+
} else if(err.keyword === "absolutePath") {
|
183
|
+
const baseMessage = `${dataPath}: ${err.message}`;
|
184
|
+
if(dataPath === "configuration.output.filename") {
|
185
|
+
return `${baseMessage}\n` +
|
186
|
+
"Please use output.path to specify absolute path and output.filename for the file name.";
|
187
|
+
}
|
188
|
+
return baseMessage;
|
189
|
+
} else {
|
190
|
+
// eslint-disable-line no-fallthrough
|
191
|
+
return `${dataPath} ${err.message} (${JSON.stringify(err, 0, 2)}).\n${getSchemaPartText(err.parentSchema)}`;
|
192
|
+
}
|
193
|
+
}
|
194
|
+
}
|
195
|
+
|
196
|
+
module.exports = WebpackOptionsValidationError;
|