groupBySpriteFileName()

in packages/extract-svg-sprite-webpack-plugin/lib/utils/sprite-compiler.js [43:83]


  groupBySpriteFileName(compilation) {
    const sprites = [];

    Array.from(this.symbols.keys()).forEach(path => {
      const symbol = this.symbols.get(path);
      const { config, module } = symbol;

      const compilationContext = helpers.getRootCompilation(compilation)
        .compiler.context;

      let filename;
      if (config.filename && config.emit) {
        filename = typeof config.filename === 'function'
          ? config.filename(module)
          : config.filename;

        if (filename.includes('[issuer-path]')) {
          filename = filename.replace(
            '[issuer-path]',
            module.issuer.resource
              .replace(compilationContext, '')
              .replace(Path.extname(module.issuer.resource), '')
              .replace(/^\//, '')
          );
        }
      }

      let sprite = sprites.find(s => s.filename === filename);
      if (!sprite) {
        sprite = { symbols: [symbol] };
        if (filename) {
          sprite.filename = filename;
        }
        sprites.push(sprite);
      } else {
        sprite.symbols.push(symbol);
      }
    });

    return sprites;
  }