diff --git a/packages/webpack-cli/__tests__/StatsGroup.test.js b/packages/webpack-cli/__tests__/StatsGroup.test.js deleted file mode 100644 index 72fd114829b..00000000000 --- a/packages/webpack-cli/__tests__/StatsGroup.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const StatsGroup = require('../lib/groups/StatsGroup'); - -describe('StatsGroup', function () { - it('should handle json', () => { - const group = new StatsGroup([ - { - json: true, - }, - ]); - - const result = group.run(); - expect(result.options.stats).toBeFalsy(); - expect(result.outputOptions.json).toBeTruthy(); - }); -}); diff --git a/packages/webpack-cli/__tests__/resolveStats.js b/packages/webpack-cli/__tests__/resolveStats.js new file mode 100644 index 00000000000..2b71a292960 --- /dev/null +++ b/packages/webpack-cli/__tests__/resolveStats.js @@ -0,0 +1,19 @@ +const resolveStats = require('../lib/groups/resolveStats'); + +describe('StatsGroup', function () { + it('should assign json correctly', () => { + const result = resolveStats({ + json: true, + }); + expect(result.options.stats).toBeFalsy(); + expect(result.outputOptions.json).toBeTruthy(); + }); + + it('should assign stats correctly', () => { + const result = resolveStats({ + stats: 'warning', + }); + expect(result.options.stats).toEqual('warning'); + expect(result.outputOptions.json).toBeFalsy(); + }); +}); diff --git a/packages/webpack-cli/lib/groups/StatsGroup.js b/packages/webpack-cli/lib/groups/StatsGroup.js deleted file mode 100644 index b3e6b62c9d1..00000000000 --- a/packages/webpack-cli/lib/groups/StatsGroup.js +++ /dev/null @@ -1,26 +0,0 @@ -const GroupHelper = require('../utils/GroupHelper'); -/** - * StatsGroup gathers information about the stats options - */ -class StatsGroup extends GroupHelper { - constructor(options) { - super(options); - } - - resolveOptions() { - const { stats, json } = this.args; - if (stats !== undefined) { - this.opts.options.stats = stats; - } - if (json) { - this.opts.outputOptions.json = true; - } - } - - run() { - this.resolveOptions(); - return this.opts; - } -} - -module.exports = StatsGroup; diff --git a/packages/webpack-cli/lib/groups/resolveStats.js b/packages/webpack-cli/lib/groups/resolveStats.js new file mode 100644 index 00000000000..acc49dfdd76 --- /dev/null +++ b/packages/webpack-cli/lib/groups/resolveStats.js @@ -0,0 +1,22 @@ +/** + * Resolve flags which deal with compilation stats + * @param {args} args - Parsed args passed to CLI + */ +const resolveStats = (args) => { + const { stats, json } = args; + + const finalOptions = { + options: {}, + outputOptions: {}, + }; + + if (stats !== undefined) { + finalOptions.options.stats = stats; + } + if (json) { + finalOptions.outputOptions.json = true; + } + return finalOptions; +}; + +module.exports = resolveStats; diff --git a/packages/webpack-cli/lib/utils/cli-flags.js b/packages/webpack-cli/lib/utils/cli-flags.js index 250a6b6ff4b..9bd3201edbc 100644 --- a/packages/webpack-cli/lib/utils/cli-flags.js +++ b/packages/webpack-cli/lib/utils/cli-flags.js @@ -5,7 +5,6 @@ const CONFIG_GROUP = 'config'; const BASIC_GROUP = 'basic'; const OUTPUT_GROUP = 'output'; const ADVANCED_GROUP = 'advanced'; -const DISPLAY_GROUP = 'stats'; const ZERO_CONFIG_GROUP = 'zero-config'; const groups = { @@ -14,7 +13,6 @@ const groups = { BASIC_GROUP, OUTPUT_GROUP, ADVANCED_GROUP, - DISPLAY_GROUP, ZERO_CONFIG_GROUP, }; @@ -99,7 +97,6 @@ const core = [ name: 'color', usage: '--color', type: Boolean, - group: DISPLAY_GROUP, negative: true, defaultValue: true, description: 'Enable/Disable colors on console', @@ -189,7 +186,6 @@ const core = [ type: Boolean, alias: 'j', description: 'Prints result as JSON', - group: DISPLAY_GROUP, }, { name: 'mode', @@ -210,7 +206,6 @@ const core = [ name: 'stats', usage: '--stats ', type: [String, Boolean], - group: DISPLAY_GROUP, negative: true, description: 'It instructs webpack on how to treat the stats e.g. verbose', link: 'https://webpack.js.org/configuration/stats/#stats', diff --git a/packages/webpack-cli/lib/webpack-cli.js b/packages/webpack-cli/lib/webpack-cli.js index de3320550e0..7d27b8a38dc 100644 --- a/packages/webpack-cli/lib/webpack-cli.js +++ b/packages/webpack-cli/lib/webpack-cli.js @@ -2,6 +2,7 @@ const { options } = require('colorette'); const GroupHelper = require('./utils/GroupHelper'); const handleConfigResolution = require('./groups/ConfigGroup'); const resolveMode = require('./groups/resolveMode'); +const resolveStats = require('./groups/resolveStats'); const { Compiler } = require('./utils/Compiler'); const { groups, core } = require('./utils/cli-flags'); const webpackMerge = require('webpack-merge'); @@ -114,11 +115,6 @@ class WebpackCLI extends GroupHelper { this.advancedGroup = new AdvancedGroup(value); break; } - case groups.DISPLAY_GROUP: { - const StatsGroup = require('./groups/StatsGroup'); - this.statsGroup = new StatsGroup(value); - break; - } case groups.HELP_GROUP: { const HelpGroup = require('./groups/HelpGroup'); this.helpGroup = new HelpGroup(); @@ -251,7 +247,7 @@ class WebpackCLI extends GroupHelper { .then(() => this._handleCoreFlags()) .then(() => this._handleGroupHelper(this.basicGroup)) .then(() => this._handleGroupHelper(this.advancedGroup)) - .then(() => this._handleGroupHelper(this.statsGroup)) + .then(() => this._baseResolver(resolveStats, parsedArgs)) .then(() => this._handleGroupHelper(this.helpGroup)); }