zhangjian
2023-06-05 0976d2d0f90cff460cedfdc8bd74e98c2c31a58c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* eslint-disable import/no-unresolved */
// eslint-disable-next-line import/no-extraneous-dependencies
const RuleSet = require('webpack/lib/RuleSet');
 
const flattenAndExtractUse = rules => rules.reduce((pre, rule) => {
  if ('rules' in rule || 'oneOf' in rule) {
    return pre.concat(flattenAndExtractUse(rule.rules || rule.oneOf));
  }
 
  return pre.concat(rule.use || []);
}, []);
 
module.exports = (compiler) => {
  const rawRules = compiler.options.module.rules;
  const { rules } = new RuleSet(rawRules);
  const rule = flattenAndExtractUse(rules)
    .find((item) => {
      return /svg-sprite-loader/.test(item.loader);
    }) || {};
 
  return rule.options || {};
};