From ec569e24ffaf40fe2633d39b448f3301079376ad Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Thu, 24 Sep 2020 19:29:51 +0530 Subject: [PATCH 1/2] refactor: migrate stats group --- .../webpack-cli/__tests__/StatsGroup.test.js | 22 +++++++++------- packages/webpack-cli/lib/groups/StatsGroup.js | 26 ------------------- .../webpack-cli/lib/groups/resolveStats.js | 22 ++++++++++++++++ packages/webpack-cli/lib/utils/cli-flags.js | 5 ---- packages/webpack-cli/lib/webpack-cli.js | 8 ++---- 5 files changed, 37 insertions(+), 46 deletions(-) delete mode 100644 packages/webpack-cli/lib/groups/StatsGroup.js create mode 100644 packages/webpack-cli/lib/groups/resolveStats.js diff --git a/packages/webpack-cli/__tests__/StatsGroup.test.js b/packages/webpack-cli/__tests__/StatsGroup.test.js index 72fd114829b..2b71a292960 100644 --- a/packages/webpack-cli/__tests__/StatsGroup.test.js +++ b/packages/webpack-cli/__tests__/StatsGroup.test.js @@ -1,15 +1,19 @@ -const StatsGroup = require('../lib/groups/StatsGroup'); +const resolveStats = require('../lib/groups/resolveStats'); describe('StatsGroup', function () { - it('should handle json', () => { - const group = new StatsGroup([ - { - json: true, - }, - ]); - - const result = group.run(); + 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)); } From 6a83af970c77a69a11fef1013652d06a565036ca Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Thu, 24 Sep 2020 19:32:55 +0530 Subject: [PATCH 2/2] refactor: migrate stats group --- .../webpack-cli/__tests__/{StatsGroup.test.js => resolveStats.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/webpack-cli/__tests__/{StatsGroup.test.js => resolveStats.js} (100%) diff --git a/packages/webpack-cli/__tests__/StatsGroup.test.js b/packages/webpack-cli/__tests__/resolveStats.js similarity index 100% rename from packages/webpack-cli/__tests__/StatsGroup.test.js rename to packages/webpack-cli/__tests__/resolveStats.js