diff options
Diffstat (limited to 'node_modules/webpack-cli/bin/config/config-yargs.js')
-rw-r--r-- | node_modules/webpack-cli/bin/config/config-yargs.js | 504 |
1 files changed, 504 insertions, 0 deletions
diff --git a/node_modules/webpack-cli/bin/config/config-yargs.js b/node_modules/webpack-cli/bin/config/config-yargs.js new file mode 100644 index 0000000..dc78f95 --- /dev/null +++ b/node_modules/webpack-cli/bin/config/config-yargs.js @@ -0,0 +1,504 @@ +const optionsSchema = require("../config/optionsSchema.json"); + +const { GROUPS } = require("../utils/constants"); + +const { + CONFIG_GROUP, + BASIC_GROUP, + MODULE_GROUP, + OUTPUT_GROUP, + ADVANCED_GROUP, + RESOLVE_GROUP, + OPTIMIZE_GROUP, + DISPLAY_GROUP +} = GROUPS; + +const nestedProperties = ["anyOf", "oneOf", "allOf"]; + +const resolveSchema = schema => { + let current = schema; + if (schema && typeof schema === "object" && "$ref" in schema) { + const path = schema.$ref.split("/"); + for (const element of path) { + if (element === "#") { + current = optionsSchema; + } else { + current = current[element]; + } + } + } + return current; +}; + +const findPropertyInSchema = (schema, property, subProperty) => { + if (!schema) return null; + if (subProperty) { + if (schema[property] && typeof schema[property] === "object" && subProperty in schema[property]) { + return resolveSchema(schema[property][subProperty]); + } + } else { + if (property in schema) return resolveSchema(schema[property]); + } + for (const name of nestedProperties) { + if (schema[name]) { + for (const item of schema[name]) { + const resolvedItem = resolveSchema(item); + const result = findPropertyInSchema(resolvedItem, property, subProperty); + if (result) return result; + } + } + } + return undefined; +}; + +const getSchemaInfo = (path, property, subProperty) => { + const pathSegments = path.split("."); + let current = optionsSchema; + for (const segment of pathSegments) { + if (segment === "*") { + current = findPropertyInSchema(current, "additionalProperties") || findPropertyInSchema(current, "items"); + } else { + current = findPropertyInSchema(current, "properties", segment); + } + if (!current) return undefined; + } + return findPropertyInSchema(current, property, subProperty); +}; + +module.exports = function(yargs) { + yargs + .help("help") + .alias("help", "h") + .version() + .alias("version", "v") + .options({ + config: { + type: "string", + describe: "Path to the config file", + group: CONFIG_GROUP, + defaultDescription: "webpack.config.js or webpackfile.js", + requiresArg: true + }, + "config-register": { + type: "array", + alias: "r", + describe: "Preload one or more modules before loading the webpack configuration", + group: CONFIG_GROUP, + defaultDescription: "module id or path", + requiresArg: true + }, + "config-name": { + type: "string", + describe: "Name of the config to use", + group: CONFIG_GROUP, + requiresArg: true + }, + env: { + describe: "Environment passed to the config, when it is a function", + group: CONFIG_GROUP + }, + mode: { + type: getSchemaInfo("mode", "type"), + choices: getSchemaInfo("mode", "enum"), + describe: getSchemaInfo("mode", "description"), + group: CONFIG_GROUP, + requiresArg: true + }, + context: { + type: getSchemaInfo("context", "type"), + describe: getSchemaInfo("context", "description"), + group: BASIC_GROUP, + defaultDescription: "The current directory", + requiresArg: true + }, + entry: { + type: "string", + describe: getSchemaInfo("entry", "description"), + group: BASIC_GROUP, + requiresArg: true + }, + "no-cache": { + type: "boolean", + describe: "Disables cached builds", + group: BASIC_GROUP + }, + "module-bind": { + type: "string", + describe: "Bind an extension to a loader", + group: MODULE_GROUP, + requiresArg: true + }, + "module-bind-post": { + type: "string", + describe: "Bind an extension to a post loader", + group: MODULE_GROUP, + requiresArg: true + }, + "module-bind-pre": { + type: "string", + describe: "Bind an extension to a pre loader", + group: MODULE_GROUP, + requiresArg: true + }, + output: { + alias: "o", + describe: "The output path and file for compilation assets", + group: OUTPUT_GROUP, + requiresArg: true + }, + "output-path": { + type: "string", + describe: getSchemaInfo("output.path", "description"), + group: OUTPUT_GROUP, + defaultDescription: "The current directory", + requiresArg: true + }, + "output-filename": { + type: "string", + describe: getSchemaInfo("output.filename", "description"), + group: OUTPUT_GROUP, + defaultDescription: "[name].js", + requiresArg: true + }, + "output-chunk-filename": { + type: "string", + describe: getSchemaInfo("output.chunkFilename", "description"), + group: OUTPUT_GROUP, + defaultDescription: "filename with [id] instead of [name] or [id] prefixed", + requiresArg: true + }, + "output-source-map-filename": { + type: "string", + describe: getSchemaInfo("output.sourceMapFilename", "description"), + group: OUTPUT_GROUP, + requiresArg: true + }, + "output-public-path": { + type: "string", + describe: getSchemaInfo("output.publicPath", "description"), + group: OUTPUT_GROUP, + requiresArg: true + }, + "output-jsonp-function": { + type: "string", + describe: getSchemaInfo("output.jsonpFunction", "description"), + group: OUTPUT_GROUP, + requiresArg: true + }, + "output-pathinfo": { + type: "boolean", + describe: getSchemaInfo("output.pathinfo", "description"), + group: OUTPUT_GROUP + }, + "output-library": { + type: "array", + describe: "Expose the exports of the entry point as library", + group: OUTPUT_GROUP, + requiresArg: true + }, + "output-library-target": { + type: "string", + describe: getSchemaInfo("output.libraryTarget", "description"), + choices: getSchemaInfo("output.libraryTarget", "enum"), + group: OUTPUT_GROUP, + requiresArg: true + }, + "records-input-path": { + type: "string", + describe: getSchemaInfo("recordsInputPath", "description"), + group: ADVANCED_GROUP, + requiresArg: true + }, + "records-output-path": { + type: "string", + describe: getSchemaInfo("recordsOutputPath", "description"), + group: ADVANCED_GROUP, + requiresArg: true + }, + "records-path": { + type: "string", + describe: getSchemaInfo("recordsPath", "description"), + group: ADVANCED_GROUP, + requiresArg: true + }, + define: { + type: "string", + describe: "Define any free var in the bundle", + group: ADVANCED_GROUP, + requiresArg: true + }, + target: { + type: "string", + describe: getSchemaInfo("target", "description"), + group: ADVANCED_GROUP, + requiresArg: true + }, + cache: { + type: "boolean", + describe: getSchemaInfo("cache", "description"), + default: null, + group: ADVANCED_GROUP, + defaultDescription: "It's enabled by default when watching" + }, + watch: { + type: "boolean", + alias: "w", + describe: getSchemaInfo("watch", "description"), + group: BASIC_GROUP + }, + "watch-stdin": { + type: "boolean", + alias: "stdin", + describe: getSchemaInfo("watchOptions.stdin", "description"), + group: ADVANCED_GROUP + }, + "watch-aggregate-timeout": { + describe: getSchemaInfo("watchOptions.aggregateTimeout", "description"), + type: getSchemaInfo("watchOptions.aggregateTimeout", "type"), + group: ADVANCED_GROUP, + requiresArg: true + }, + "watch-poll": { + type: "string", + describe: getSchemaInfo("watchOptions.poll", "description"), + group: ADVANCED_GROUP + }, + hot: { + type: "boolean", + describe: "Enables Hot Module Replacement", + group: ADVANCED_GROUP + }, + debug: { + type: "boolean", + describe: "Switch loaders to debug mode", + group: BASIC_GROUP + }, + devtool: { + type: "string", + describe: getSchemaInfo("devtool", "description"), + group: BASIC_GROUP, + requiresArg: true + }, + "resolve-alias": { + type: "string", + describe: getSchemaInfo("resolve.alias", "description"), + group: RESOLVE_GROUP, + requiresArg: true + }, + "resolve-extensions": { + type: "array", + describe: getSchemaInfo("resolve.alias", "description"), + group: RESOLVE_GROUP, + requiresArg: true + }, + "resolve-loader-alias": { + type: "string", + describe: "Setup a loader alias for resolving", + group: RESOLVE_GROUP, + requiresArg: true + }, + "optimize-max-chunks": { + describe: "Try to keep the chunk count below a limit", + group: OPTIMIZE_GROUP, + requiresArg: true + }, + "optimize-min-chunk-size": { + describe: getSchemaInfo("optimization.splitChunks.minSize", "description"), + group: OPTIMIZE_GROUP, + requiresArg: true + }, + "optimize-minimize": { + type: "boolean", + describe: getSchemaInfo("optimization.minimize", "description"), + group: OPTIMIZE_GROUP + }, + prefetch: { + type: "string", + describe: "Prefetch this request (Example: --prefetch ./file.js)", + group: ADVANCED_GROUP, + requiresArg: true + }, + provide: { + type: "string", + describe: "Provide these modules as free vars in all modules (Example: --provide jQuery=jquery)", + group: ADVANCED_GROUP, + requiresArg: true + }, + "labeled-modules": { + type: "boolean", + describe: "Enables labeled modules", + group: ADVANCED_GROUP + }, + plugin: { + type: "string", + describe: "Load this plugin", + group: ADVANCED_GROUP, + requiresArg: true + }, + bail: { + type: getSchemaInfo("bail", "type"), + describe: getSchemaInfo("bail", "description"), + group: ADVANCED_GROUP, + default: null + }, + profile: { + type: "boolean", + describe: getSchemaInfo("profile", "description"), + group: ADVANCED_GROUP, + default: null + }, + d: { + type: "boolean", + describe: "shortcut for --debug --devtool eval-cheap-module-source-map --output-pathinfo", + group: BASIC_GROUP + }, + p: { + type: "boolean", + // eslint-disable-next-line quotes + describe: 'shortcut for --optimize-minimize --define process.env.NODE_ENV="production"', + group: BASIC_GROUP + }, + silent: { + type: "boolean", + describe: "Prevent output from being displayed in stdout" + }, + json: { + type: "boolean", + alias: "j", + describe: "Prints the result as JSON." + }, + progress: { + type: "boolean", + describe: "Print compilation progress in percentage", + group: BASIC_GROUP + }, + color: { + type: "boolean", + alias: "colors", + default: function supportsColor() { + return require("supports-color").stdout; + }, + group: DISPLAY_GROUP, + describe: "Force colors on the console" + }, + "no-color": { + type: "boolean", + alias: "no-colors", + group: DISPLAY_GROUP, + describe: "Force no colors on the console" + }, + "sort-modules-by": { + type: "string", + group: DISPLAY_GROUP, + describe: "Sorts the modules list by property in module" + }, + "sort-chunks-by": { + type: "string", + group: DISPLAY_GROUP, + describe: "Sorts the chunks list by property in chunk" + }, + "sort-assets-by": { + type: "string", + group: DISPLAY_GROUP, + describe: "Sorts the assets list by property in asset" + }, + "hide-modules": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Hides info about modules" + }, + "display-exclude": { + type: "string", + group: DISPLAY_GROUP, + describe: "Exclude modules in the output" + }, + "display-modules": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display even excluded modules in the output" + }, + "display-max-modules": { + type: "number", + group: DISPLAY_GROUP, + describe: "Sets the maximum number of visible modules in output" + }, + "display-chunks": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display chunks in the output" + }, + "display-entrypoints": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display entry points in the output" + }, + "display-origins": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display origins of chunks in the output" + }, + "display-cached": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display also cached modules in the output" + }, + "display-cached-assets": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display also cached assets in the output" + }, + "display-reasons": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display reasons about module inclusion in the output" + }, + "display-depth": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display distance from entry point for each module" + }, + "display-used-exports": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display information about used exports in modules (Tree Shaking)" + }, + "display-provided-exports": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display information about exports provided from modules" + }, + "display-optimization-bailout": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display information about why optimization bailed out for modules" + }, + "display-error-details": { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Display details about errors" + }, + display: { + type: "string", + choices: ["", "verbose", "detailed", "normal", "minimal", "errors-only", "none"], + group: DISPLAY_GROUP, + describe: "Select display preset" + }, + verbose: { + type: "boolean", + group: DISPLAY_GROUP, + describe: "Show more details" + }, + "info-verbosity": { + type: "string", + default: "info", + choices: ["none", "info", "verbose"], + group: DISPLAY_GROUP, + describe: "Controls the output of lifecycle messaging e.g. Started watching files..." + }, + "build-delimiter": { + type: "string", + group: DISPLAY_GROUP, + describe: "Display custom text after build output" + } + }); +}; |