diff options
author | 2022-06-11 00:32:23 +0200 | |
---|---|---|
committer | 2022-06-10 17:32:23 -0500 | |
commit | 5c73f614e8f579e04fe61c948b69be7bc6d81d5d (patch) | |
tree | c30a06136e89996741e46e65d8a4c00f7d90fb76 | |
parent | 43dda86ce2577d6930acdc9a8261ee65d43705d8 (diff) | |
download | astro-5c73f614e8f579e04fe61c948b69be7bc6d81d5d.tar.gz astro-5c73f614e8f579e04fe61c948b69be7bc6d81d5d.tar.zst astro-5c73f614e8f579e04fe61c948b69be7bc6d81d5d.zip |
Fix remarkMdxish performance issue on huge sites (#3572)
-rw-r--r-- | .changeset/proud-forks-hammer.md | 5 | ||||
-rw-r--r-- | packages/markdown/remark/src/remark-mdxish.ts | 13 |
2 files changed, 14 insertions, 4 deletions
diff --git a/.changeset/proud-forks-hammer.md b/.changeset/proud-forks-hammer.md new file mode 100644 index 000000000..2706b9b1b --- /dev/null +++ b/.changeset/proud-forks-hammer.md @@ -0,0 +1,5 @@ +--- +'@astrojs/markdown-remark': patch +--- + +Fix remarkMdxish performance issue on huge sites diff --git a/packages/markdown/remark/src/remark-mdxish.ts b/packages/markdown/remark/src/remark-mdxish.ts index 50bf5f103..0f70f87b3 100644 --- a/packages/markdown/remark/src/remark-mdxish.ts +++ b/packages/markdown/remark/src/remark-mdxish.ts @@ -3,12 +3,17 @@ import type { Tag } from 'mdast-util-mdx-jsx'; import { mdxFromMarkdown, mdxToMarkdown } from './mdast-util-mdxish.js'; import { mdxjs } from './mdxjs.js'; -export default function remarkMdxish(this: any, options = {}) { +// Prepare markdown extensions once to prevent performance issues +const extMdxJs = mdxjs({}); +const extMdxFromMarkdown = makeFromMarkdownLessStrict(mdxFromMarkdown()); +const extMdxToMarkdown = mdxToMarkdown(); + +export default function remarkMdxish(this: any) { const data = this.data(); - add('micromarkExtensions', mdxjs(options)); - add('fromMarkdownExtensions', makeFromMarkdownLessStrict(mdxFromMarkdown())); - add('toMarkdownExtensions', mdxToMarkdown()); + add('micromarkExtensions', extMdxJs); + add('fromMarkdownExtensions', extMdxFromMarkdown); + add('toMarkdownExtensions', extMdxToMarkdown); function add(field: string, value: unknown) { const list = data[field] ? data[field] : (data[field] = []); |