Perform normalization in the chain building process.

This commit is contained in:
Logan Smyth 2017-12-18 11:13:22 -08:00
parent 4afbc02476
commit 1312a30d54
2 changed files with 27 additions and 26 deletions

View File

@ -247,12 +247,29 @@ function createDescriptor(
};
}
function normalizeOptions(opts: ValidatedOptions): ValidatedOptions {
const options = Object.assign({}, opts);
delete options.extends;
delete options.env;
delete options.plugins;
delete options.presets;
delete options.passPerPreset;
delete options.ignore;
delete options.only;
// "sourceMap" is just aliased to sourceMap, so copy it over as
// we merge the options together.
if (options.sourceMap) {
options.sourceMaps = options.sourceMap;
delete options.sourceMap;
}
return options;
}
/**
* Load and validate the given config into a set of options, plugins, and presets.
*/
const processConfig = makeWeakCache((config: SimpleConfig): LoadedConfig => {
const options = config.options;
const plugins = (config.options.plugins || []).map((plugin, index) =>
createDescriptor(plugin, loadPlugin, config.dirname, {
index,
@ -266,13 +283,17 @@ const processConfig = makeWeakCache((config: SimpleConfig): LoadedConfig => {
createDescriptor(preset, loadPreset, config.dirname, {
index,
alias: config.alias,
ownPass: options.passPerPreset,
ownPass: config.options.passPerPreset,
}),
);
assertNoDuplicates(presets);
return { options, plugins, presets };
return {
options: normalizeOptions(config.options),
plugins,
presets,
};
});
function assertNoDuplicates(items: Array<BasicDescriptor>): void {

View File

@ -68,7 +68,6 @@ class OptionManager {
presets.forEach(({ preset, pass }) => {
this.mergeOptions(
{
// Call dedupDescriptors() to remove 'false' descriptors.
plugins: preset.plugins,
presets: preset.presets,
},
@ -77,7 +76,7 @@ class OptionManager {
);
preset.options.forEach(opts => {
merge(this.optionDefaults, normalizeOptions(opts));
merge(this.optionDefaults, opts);
});
});
}
@ -99,7 +98,7 @@ class OptionManager {
);
chain.options.forEach(opts => {
merge(this.options, normalizeOptions(opts));
merge(this.options, opts);
});
}
@ -145,25 +144,6 @@ class OptionManager {
}
}
function normalizeOptions(opts: ValidatedOptions): ValidatedOptions {
const options = Object.assign({}, opts);
delete options.extends;
delete options.env;
delete options.plugins;
delete options.presets;
delete options.passPerPreset;
delete options.ignore;
delete options.only;
// "sourceMap" is just aliased to sourceMap, so copy it over as
// we merge the options together.
if (options.sourceMap) {
options.sourceMaps = options.sourceMap;
delete options.sourceMap;
}
return options;
}
type LoadedDescriptor = {
value: {},
options: {},