diff --git a/docs/_utilities/replacer.cjs b/docs/_utilities/replacer.cjs index ddc4d4a37..d2036ce7e 100644 --- a/docs/_utilities/replacer.cjs +++ b/docs/_utilities/replacer.cjs @@ -13,7 +13,12 @@ * @param {Replacements} replacements */ module.exports = function (content, replacements) { + /** This seems trivial, but by assigning to a string first, THEN using innerHTML after iterating over every replacement, we reduce the calculations of JSDOM. At the time of writing benchmarks show a reduction from 9seconds to 3 seconds by doing so. */ + let html = content.body.innerHTML; + replacements.forEach(replacement => { - content.body.innerHTML = content.body.innerHTML.replaceAll(replacement.pattern, replacement.replacement); + html = html.replaceAll(replacement.pattern, replacement.replacement); }); + + content.body.innerHTML = html; }; diff --git a/docs/eleventy.config.cjs b/docs/eleventy.config.cjs index 3c93aa502..138c121da 100644 --- a/docs/eleventy.config.cjs +++ b/docs/eleventy.config.cjs @@ -134,6 +134,7 @@ module.exports = function (eleventyConfig) { scrollingTables(doc); copyCodeButtons(doc); // must be after codePreviews + highlightCodeBlocks typography(doc, '#content'); + replacer(doc, [ { pattern: '%VERSION%', replacement: customElementsManifest.package.version }, { pattern: '%CDNDIR%', replacement: cdndir },