in packages/extract-svg-sprite-webpack-plugin/lib/utils/replacer.js [81:132]
static replaceInModuleSource(module, replacements, compilation) {
if (module.type === MINI_EXTRACT_MODULE_TYPE) {
replacements.forEach(({ token, replaceTo }) => {
if (module.content.indexOf(token) < 0) {
return;
}
const regExp = new RegExp(token, 'g');
module.content = module.content.replace(regExp, replaceTo);
});
return module;
}
const source = Replacer.getModuleReplaceSource(module, compilation);
if (!source) {
return module;
}
const originalSourceContent = module.originalSource().source();
replacements.forEach(({ token, replaceTo }) => {
const indexes = Replacer.getAllStringOccurrences(
originalSourceContent,
token
);
indexes.forEach(idx => {
const start = idx[0];
const end = idx[1] - 1;
/**
* source.replacements in webpack <= 4
* source._replacements in webpack 5
*/
const sourceReplacements = source.replacements || source._replacements;
const alreadyHasReplacement = sourceReplacements.find(
r => r[0] === start && r[1] === end && r[2] === replaceTo
);
if (alreadyHasReplacement) {
return;
}
source.replace(start, end, replaceTo);
});
});
return module;
}