Skip to content

Commit 83a2dd2

Browse files
snitin315anshumanv
andauthored
refactor: migrate advanced group (#1863)
Co-authored-by: Anshuman Verma <[email protected]>
1 parent 3efbaf4 commit 83a2dd2

File tree

6 files changed

+71
-95
lines changed

6 files changed

+71
-95
lines changed

packages/webpack-cli/__tests__/AdvancedGroup.test.js

Lines changed: 0 additions & 42 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
const resolveAdvanced = require('../lib/groups/resolveAdvanced');
2+
3+
const targetValues = ['web', 'webworker', 'node', 'async-node', 'node-webkit', 'electron-main', 'electron-renderer', 'electron-preload'];
4+
5+
describe('advanced options', function () {
6+
it('should load the HMR plugin', () => {
7+
const result = resolveAdvanced({
8+
hot: true,
9+
});
10+
expect(result.options.plugins[0].constructor.name).toEqual('HotModuleReplacementPlugin');
11+
});
12+
13+
it('should load the prefetch plugin', () => {
14+
const result = resolveAdvanced({
15+
prefetch: 'url',
16+
});
17+
expect(result.options.plugins[0].constructor.name).toEqual('PrefetchPlugin');
18+
});
19+
20+
{
21+
targetValues.map((option) => {
22+
it(`should handle ${option} option`, () => {
23+
const result = resolveAdvanced({
24+
target: option,
25+
});
26+
expect(result.options.target).toEqual(option);
27+
});
28+
});
29+
}
30+
});

packages/webpack-cli/lib/groups/AdvancedGroup.js

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* Resolve advanced flags
3+
* @param {args} args - Parsed args passed to CLI
4+
*/
5+
const resolveAdvanced = (args) => {
6+
const { target, prefetch, hot } = args;
7+
8+
const finalOptions = {
9+
options: {},
10+
outputOptions: {},
11+
};
12+
13+
if (hot) {
14+
const { HotModuleReplacementPlugin } = require('webpack');
15+
const hotModuleVal = new HotModuleReplacementPlugin();
16+
if (finalOptions.options && finalOptions.options.plugins) {
17+
finalOptions.options.plugins.unshift(hotModuleVal);
18+
} else {
19+
finalOptions.options.plugins = [hotModuleVal];
20+
}
21+
}
22+
if (prefetch) {
23+
const { PrefetchPlugin } = require('webpack');
24+
const prefetchVal = new PrefetchPlugin(null, args.prefetch);
25+
if (finalOptions.options && finalOptions.options.plugins) {
26+
finalOptions.options.plugins.unshift(prefetchVal);
27+
} else {
28+
finalOptions.options.plugins = [prefetchVal];
29+
}
30+
}
31+
if (target) {
32+
finalOptions.options.target = args.target;
33+
}
34+
35+
return finalOptions;
36+
};
37+
38+
module.exports = resolveAdvanced;

packages/webpack-cli/lib/utils/cli-flags.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ const cli = packageExists('webpack') ? require('webpack').cli : undefined;
33

44
const HELP_GROUP = 'help';
55
const BASIC_GROUP = 'basic';
6-
const ADVANCED_GROUP = 'advanced';
76

87
const groups = {
98
HELP_GROUP,
109
BASIC_GROUP,
11-
ADVANCED_GROUP,
1210
};
1311

1412
const commands = [
@@ -129,7 +127,6 @@ const core = [
129127
usage: '--target <value>',
130128
alias: 't',
131129
type: String,
132-
group: ADVANCED_GROUP,
133130
multiple: cli !== undefined,
134131
description: 'Sets the build target e.g. node',
135132
link: 'https://webpack.js.org/configuration/target/#target',
@@ -149,7 +146,6 @@ const core = [
149146
alias: 'h',
150147
type: Boolean,
151148
negative: true,
152-
group: ADVANCED_GROUP,
153149
description: 'Enables Hot Module Replacement',
154150
link: 'https://webpack.js.org/concepts/hot-module-replacement/',
155151
},
@@ -167,7 +163,6 @@ const core = [
167163
name: 'prefetch',
168164
usage: '--prefetch <request>',
169165
type: String,
170-
group: ADVANCED_GROUP,
171166
description: 'Prefetch this request',
172167
link: 'https://webpack.js.org/plugins/prefetch-plugin/',
173168
},

packages/webpack-cli/lib/webpack-cli.js

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const resolveMode = require('./groups/resolveMode');
1313
const resolveStats = require('./groups/resolveStats');
1414
const resolveOutput = require('./groups/resolveOutput');
1515
const basicResolver = require('./groups/basicResolver');
16+
const resolveAdvanced = require('./groups/resolveAdvanced');
1617

1718
class WebpackCLI extends GroupHelper {
1819
constructor() {
@@ -84,13 +85,8 @@ class WebpackCLI extends GroupHelper {
8485
* @returns {void}
8586
*/
8687
resolveGroups() {
87-
for (const [key, value] of this.groupMap.entries()) {
88+
for (const [key] of this.groupMap.entries()) {
8889
switch (key) {
89-
case groups.ADVANCED_GROUP: {
90-
const AdvancedGroup = require('./groups/AdvancedGroup');
91-
this.advancedGroup = new AdvancedGroup(value);
92-
break;
93-
}
9490
case groups.HELP_GROUP: {
9591
const HelpGroup = require('./groups/HelpGroup');
9692
this.helpGroup = new HelpGroup();
@@ -200,7 +196,7 @@ class WebpackCLI extends GroupHelper {
200196
.then(() => this._baseResolver(resolveOutput, parsedArgs, outputStrategy))
201197
.then(() => this._handleCoreFlags())
202198
.then(() => this._baseResolver(basicResolver, parsedArgs))
203-
.then(() => this._handleGroupHelper(this.advancedGroup))
199+
.then(() => this._baseResolver(resolveAdvanced, parsedArgs))
204200
.then(() => this._baseResolver(resolveStats, parsedArgs))
205201
.then(() => this._handleGroupHelper(this.helpGroup));
206202
}

0 commit comments

Comments
 (0)