Skip to content

Commit 9938ed0

Browse files
authored
refactor: remove redundant arg computation in config resolver (#1821)
* refactor: remove redundant computation in config resolver
1 parent 111198b commit 9938ed0

3 files changed

Lines changed: 17 additions & 26 deletions

File tree

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

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,10 @@ const promiseConfig = require('./webpack.promise.config.cjs');
77

88
describe('ConfigGroup', function () {
99
it('should handle merge properly', async () => {
10-
const result = await ConfigGroup([
11-
{
12-
merge: true,
13-
},
14-
{
15-
config: [resolve(__dirname, './webpack.config.cjs')],
16-
},
17-
]);
10+
const result = await ConfigGroup({
11+
merge: true,
12+
config: [resolve(__dirname, './webpack.config.cjs')],
13+
});
1814

1915
const expectedOptions = {
2016
output: { filename: './dist-commonjs.js', libraryTarget: 'commonjs' },
@@ -29,31 +25,31 @@ describe('ConfigGroup', function () {
2925
});
3026

3127
it('should return array for multiple config', async () => {
32-
const result = await ConfigGroup([
33-
{ config: [resolve(__dirname, './webpack.config1.cjs'), resolve(__dirname, './webpack.config2.cjs')] },
34-
]);
28+
const result = await ConfigGroup({
29+
config: [resolve(__dirname, './webpack.config1.cjs'), resolve(__dirname, './webpack.config2.cjs')],
30+
});
3531
const expectedOptions = [config1, config2];
3632
expect(result.options).toEqual(expectedOptions);
3733
expect(result.outputOptions).toEqual({});
3834
});
3935

4036
it('should return config object for single config', async () => {
41-
const result = await ConfigGroup([{ config: [resolve(__dirname, './webpack.config1.cjs')] }]);
37+
const result = await ConfigGroup({ config: [resolve(__dirname, './webpack.config1.cjs')] });
4238
expect(result.options).toEqual(config1);
4339
expect(result.outputOptions).toEqual({});
4440
});
4541

4642
it('should return resolved config object for promise config', async () => {
47-
const result = await ConfigGroup([{ config: [resolve(__dirname, './webpack.promise.config.cjs')] }]);
43+
const result = await ConfigGroup({ config: [resolve(__dirname, './webpack.promise.config.cjs')] });
4844
const expectedOptions = await promiseConfig();
4945
expect(result.options).toEqual(expectedOptions);
5046
expect(result.outputOptions).toEqual({});
5147
});
5248

5349
it('should handle configs returning different types', async () => {
54-
const result = await ConfigGroup([
55-
{ config: [resolve(__dirname, './webpack.promise.config.cjs'), resolve(__dirname, './webpack.config.cjs')] },
56-
]);
50+
const result = await ConfigGroup({
51+
config: [resolve(__dirname, './webpack.promise.config.cjs'), resolve(__dirname, './webpack.config.cjs')],
52+
});
5753
const resolvedPromiseConfig = await promiseConfig();
5854
const expectedOptions = [resolvedPromiseConfig, ...arrayConfig];
5955
expect(result.options).toEqual(expectedOptions);

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ const { resolve, sep, dirname, extname } = require('path');
33
const webpackMerge = require('webpack-merge');
44
const { extensions, jsVariants } = require('interpret');
55
const rechoir = require('rechoir');
6-
const { arrayToObject } = require('../utils/arg-utils');
76
const ConfigError = require('../utils/errors/ConfigError');
87
const logger = require('../utils/logger');
98

@@ -141,7 +140,7 @@ const resolveConfigFiles = async (args) => {
141140
// Given config data, determines the type of config and
142141
// returns final config
143142
const finalize = async (moduleObj, args) => {
144-
const { argv, env, configName } = args;
143+
const { env, configName } = args;
145144
const newOptionsObject = {
146145
outputOptions: {},
147146
options: {},
@@ -161,7 +160,7 @@ const finalize = async (moduleObj, args) => {
161160
return envObject;
162161
}, {});
163162
}
164-
const newOptions = configOptions(formattedEnv, argv);
163+
const newOptions = configOptions(formattedEnv, args);
165164
// When config function returns a promise, resolve it, if not it's resolved by default
166165
newOptionsObject['options'] = await Promise.resolve(newOptions);
167166
} else if (Array.isArray(configOptions) && configName) {
@@ -217,9 +216,8 @@ const resolveConfigMerging = async (args) => {
217216
};
218217

219218
const handleConfigResolution = async (args) => {
220-
const parsedArgs = arrayToObject(args);
221-
await resolveConfigFiles(parsedArgs);
222-
await resolveConfigMerging(parsedArgs);
219+
await resolveConfigFiles(args);
220+
await resolveConfigMerging(args);
223221
return opts;
224222
};
225223

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,7 @@ class WebpackCLI extends GroupHelper {
7171
* @returns {void}
7272
*/
7373
async _handleConfig(parsedArgs) {
74-
const { mode } = parsedArgs;
75-
// get config group values from the map
76-
const value = this.groupMap.get(groups.CONFIG_GROUP) || [];
77-
const resolvedConfig = await handleConfigResolution([...value, { mode }, { argv: parsedArgs }]);
74+
const resolvedConfig = await handleConfigResolution(parsedArgs);
7875
this._mergeOptionsToConfiguration(resolvedConfig.options);
7976
this._mergeOptionsToOutputConfiguration(resolvedConfig.outputOptions);
8077
}

0 commit comments

Comments
 (0)