34 lines
863 B
TypeScript
34 lines
863 B
TypeScript
import {
|
|
ResolvePluginInstance,
|
|
RuleSetRule,
|
|
WebpackPluginInstance,
|
|
} from 'webpack';
|
|
|
|
export const mergeRules = (...args: RuleSetRule[]) =>
|
|
args.reduce((rules, rule) => {
|
|
if (
|
|
rules.some(
|
|
(includedPlugin) =>
|
|
includedPlugin.constructor.name === rule.constructor.name
|
|
)
|
|
) {
|
|
return rules;
|
|
}
|
|
return [...rules, rule];
|
|
}, [] as WebpackPluginInstance[]);
|
|
|
|
export const mergePlugins = (
|
|
...args: (WebpackPluginInstance | ResolvePluginInstance)[]
|
|
): (WebpackPluginInstance | ResolvePluginInstance)[] =>
|
|
args.reduce((plugins, plugin) => {
|
|
if (
|
|
plugins.some(
|
|
(includedPlugin) =>
|
|
includedPlugin.constructor.name === plugin.constructor.name
|
|
)
|
|
) {
|
|
return plugins;
|
|
}
|
|
return [...plugins, plugin];
|
|
}, [] as (WebpackPluginInstance | ResolvePluginInstance)[]);
|