const fs = require("fs") const path = require("path") const { RawSource } = require("webpack-sources") const { generateAtlasViews } = require("./utils.js") class SVGSymbolAtlasViewPlugin { constructor(options = {}) { this.suffix = options.suffix || ".svg" this.symbolId = options.symbolId || null } apply(compiler) { compiler.hooks.thisCompilation.tap("SVGSymbolAtlasViewPlugin", (compilation) => { compilation.hooks.processAssets.tap( { name: "SVGSymbolAtlasViewPlugin", stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE, }, (assets) => { for (const assetName in assets) { if (assetName.endsWith(this.suffix)) { const originalSVG = assets[assetName].source().toString() const atlasSVG = generateAtlasViews(originalSVG, this.symbolId) // Replace old SVG asset with new SVG compilation.updateAsset(assetName, new RawSource(atlasSVG)) } } } ) }) } } module.exports = SVGSymbolAtlasViewPlugin