summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/validateSchema.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-10-31 15:37:35 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-10-31 15:37:35 +0800
commitd5f14083061f2ce6a42313188443a42e30796320 (patch)
treecc6a9889e08b29595a76a33b9e7b4ef84866468b /node_modules/webpack/lib/validateSchema.js
parentb1a6ea021f29f182b62f9f81024a3d8ac8621b7f (diff)
added make browserlist(autoprefixer) work fixed
Diffstat (limited to 'node_modules/webpack/lib/validateSchema.js')
-rw-r--r--node_modules/webpack/lib/validateSchema.js179
1 files changed, 179 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/validateSchema.js b/node_modules/webpack/lib/validateSchema.js
new file mode 100644
index 00000000..fae211a3
--- /dev/null
+++ b/node_modules/webpack/lib/validateSchema.js
@@ -0,0 +1,179 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const { validate } = require("schema-utils");
+
+/* cSpell:disable */
+const DID_YOU_MEAN = {
+ rules: "module.rules",
+ loaders: "module.rules or module.rules.*.use",
+ query: "module.rules.*.options (BREAKING CHANGE since webpack 5)",
+ noParse: "module.noParse",
+ filename: "output.filename or module.rules.*.generator.filename",
+ file: "output.filename",
+ chunkFilename: "output.chunkFilename",
+ chunkfilename: "output.chunkFilename",
+ ecmaVersion:
+ "output.environment (output.ecmaVersion was a temporary configuration option during webpack 5 beta)",
+ ecmaversion:
+ "output.environment (output.ecmaVersion was a temporary configuration option during webpack 5 beta)",
+ ecma: "output.environment (output.ecmaVersion was a temporary configuration option during webpack 5 beta)",
+ path: "output.path",
+ pathinfo: "output.pathinfo",
+ pathInfo: "output.pathinfo",
+ jsonpFunction: "output.chunkLoadingGlobal (BREAKING CHANGE since webpack 5)",
+ chunkCallbackName:
+ "output.chunkLoadingGlobal (BREAKING CHANGE since webpack 5)",
+ jsonpScriptType: "output.scriptType (BREAKING CHANGE since webpack 5)",
+ hotUpdateFunction: "output.hotUpdateGlobal (BREAKING CHANGE since webpack 5)",
+ splitChunks: "optimization.splitChunks",
+ immutablePaths: "snapshot.immutablePaths",
+ managedPaths: "snapshot.managedPaths",
+ maxModules: "stats.modulesSpace (BREAKING CHANGE since webpack 5)",
+ hashedModuleIds:
+ 'optimization.moduleIds: "hashed" (BREAKING CHANGE since webpack 5)',
+ namedChunks:
+ 'optimization.chunkIds: "named" (BREAKING CHANGE since webpack 5)',
+ namedModules:
+ 'optimization.moduleIds: "named" (BREAKING CHANGE since webpack 5)',
+ occurrenceOrder:
+ 'optimization.chunkIds: "size" and optimization.moduleIds: "size" (BREAKING CHANGE since webpack 5)',
+ automaticNamePrefix:
+ "optimization.splitChunks.[cacheGroups.*].idHint (BREAKING CHANGE since webpack 5)",
+ noEmitOnErrors:
+ "optimization.emitOnErrors (BREAKING CHANGE since webpack 5: logic is inverted to avoid negative flags)",
+ Buffer:
+ "to use the ProvidePlugin to process the Buffer variable to modules as polyfill\n" +
+ "BREAKING CHANGE: webpack 5 no longer provided Node.js polyfills by default.\n" +
+ "Note: if you are using 'node.Buffer: false', you can just remove that as this is the default behavior now.\n" +
+ "To provide a polyfill to modules use:\n" +
+ 'new ProvidePlugin({ Buffer: ["buffer", "Buffer"] }) and npm install buffer.',
+ process:
+ "to use the ProvidePlugin to process the process variable to modules as polyfill\n" +
+ "BREAKING CHANGE: webpack 5 no longer provided Node.js polyfills by default.\n" +
+ "Note: if you are using 'node.process: false', you can just remove that as this is the default behavior now.\n" +
+ "To provide a polyfill to modules use:\n" +
+ 'new ProvidePlugin({ process: "process" }) and npm install buffer.'
+};
+
+const REMOVED = {
+ concord:
+ "BREAKING CHANGE: resolve.concord has been removed and is no longer available.",
+ devtoolLineToLine:
+ "BREAKING CHANGE: output.devtoolLineToLine has been removed and is no longer available."
+};
+/* cSpell:enable */
+
+/**
+ * @param {Parameters<typeof validate>[0]} schema a json schema
+ * @param {Parameters<typeof validate>[1]} options the options that should be validated
+ * @param {Parameters<typeof validate>[2]=} validationConfiguration configuration for generating errors
+ * @returns {void}
+ */
+const validateSchema = (schema, options, validationConfiguration) => {
+ validate(
+ schema,
+ options,
+ validationConfiguration || {
+ name: "Webpack",
+ postFormatter: (formattedError, error) => {
+ const children = error.children;
+ if (
+ children &&
+ children.some(
+ child =>
+ child.keyword === "absolutePath" &&
+ child.dataPath === ".output.filename"
+ )
+ ) {
+ return `${formattedError}\nPlease use output.path to specify absolute path and output.filename for the file name.`;
+ }
+
+ if (
+ children &&
+ children.some(
+ child =>
+ child.keyword === "pattern" && child.dataPath === ".devtool"
+ )
+ ) {
+ return (
+ `${formattedError}\n` +
+ "BREAKING CHANGE since webpack 5: The devtool option is more strict.\n" +
+ "Please strictly follow the order of the keywords in the pattern."
+ );
+ }
+
+ if (error.keyword === "additionalProperties") {
+ const params =
+ /** @type {import("ajv").AdditionalPropertiesParams} */ (
+ error.params
+ );
+ if (
+ Object.prototype.hasOwnProperty.call(
+ DID_YOU_MEAN,
+ params.additionalProperty
+ )
+ ) {
+ return `${formattedError}\nDid you mean ${
+ DID_YOU_MEAN[
+ /** @type {keyof DID_YOU_MEAN} */ (params.additionalProperty)
+ ]
+ }?`;
+ }
+
+ if (
+ Object.prototype.hasOwnProperty.call(
+ REMOVED,
+ params.additionalProperty
+ )
+ ) {
+ return `${formattedError}\n${
+ REMOVED[/** @type {keyof REMOVED} */ (params.additionalProperty)]
+ }?`;
+ }
+
+ if (!error.dataPath) {
+ if (params.additionalProperty === "debug") {
+ return (
+ `${formattedError}\n` +
+ "The 'debug' property was removed in webpack 2.0.0.\n" +
+ "Loaders should be updated to allow passing this option via loader options in module.rules.\n" +
+ "Until loaders are updated one can use the LoaderOptionsPlugin to switch loaders into debug mode:\n" +
+ "plugins: [\n" +
+ " new webpack.LoaderOptionsPlugin({\n" +
+ " debug: true\n" +
+ " })\n" +
+ "]"
+ );
+ }
+
+ if (params.additionalProperty) {
+ return (
+ `${formattedError}\n` +
+ "For typos: please correct them.\n" +
+ "For loader options: webpack >= v2.0.0 no longer allows custom properties in configuration.\n" +
+ " Loaders should be updated to allow passing options via loader options in module.rules.\n" +
+ " Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader:\n" +
+ " plugins: [\n" +
+ " new webpack.LoaderOptionsPlugin({\n" +
+ " // test: /\\.xxx$/, // may apply this only for some modules\n" +
+ " options: {\n" +
+ ` ${params.additionalProperty}: …\n` +
+ " }\n" +
+ " })\n" +
+ " ]"
+ );
+ }
+ }
+ }
+
+ return formattedError;
+ }
+ }
+ );
+};
+module.exports = validateSchema;