@stellarwp/tyson
Version:
Create and manage custom configurations to build projects with @wordpress/scripts.
26 lines (25 loc) • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.modifyRulesInConfig = modifyRulesInConfig;
/**
* Modifies a set of matching rules in the WebPack configuration in place.
*
* @param config The WebPack configuration to modify.
* @param {function (element: any, index: number, array: any[]) => boolean } ruleMatcher The function that will be used
* to find matching rules.
* @param {function(rule: WebPackRule) => WebPackRule} modifyRule The function that will be called on each matching rule to
* modify it.
*
* @returns {void} The matching rules in the configuration are modified in place.
*/
function modifyRulesInConfig(config, ruleMatcher, modifyRule) {
config.module.rules = Array.isArray(config?.module?.rules)
? config.module.rules
: [];
config.module.rules = config.module.rules.map((rule, index, allRules) => {
if (!ruleMatcher(rule, index, allRules)) {
return rule;
}
return modifyRule(rule);
});
}