diff options
author | 2022-09-01 12:11:13 -0400 | |
---|---|---|
committer | 2022-09-01 12:11:13 -0400 | |
commit | db38f61b2b2dc55f03b28797d19b163b1940f1c8 (patch) | |
tree | a86045e7df08c5bc5e11e7e2f3433270f33b9a4b | |
parent | ef0ed3833925a9e6609ce6c664660a568ff28357 (diff) | |
download | astro-db38f61b2b2dc55f03b28797d19b163b1940f1c8.tar.gz astro-db38f61b2b2dc55f03b28797d19b163b1940f1c8.tar.zst astro-db38f61b2b2dc55f03b28797d19b163b1940f1c8.zip |
[MDX] Fix: GFM and Smartypants missing by default (#4588)
* fix: apply Astro defaults on empty md config
* chore: changeset
-rw-r--r-- | .changeset/weak-emus-confess.md | 5 | ||||
-rw-r--r-- | packages/integrations/mdx/src/utils.ts | 11 | ||||
-rw-r--r-- | packages/integrations/mdx/test/mdx-plugins.test.js | 11 |
3 files changed, 25 insertions, 2 deletions
diff --git a/.changeset/weak-emus-confess.md b/.changeset/weak-emus-confess.md new file mode 100644 index 000000000..4f2b74817 --- /dev/null +++ b/.changeset/weak-emus-confess.md @@ -0,0 +1,5 @@ +--- +'@astrojs/mdx': patch +--- + +Fix: Add GFM and Smartypants to MDX by default diff --git a/packages/integrations/mdx/src/utils.ts b/packages/integrations/mdx/src/utils.ts index 174cad9c1..d4d13ab05 100644 --- a/packages/integrations/mdx/src/utils.ts +++ b/packages/integrations/mdx/src/utils.ts @@ -127,7 +127,7 @@ export async function getRemarkPlugins( default: remarkPlugins = [ ...remarkPlugins, - ...(config.markdown.extendDefaultPlugins ? DEFAULT_REMARK_PLUGINS : []), + ...(markdownShouldExtendDefaultPlugins(config) ? DEFAULT_REMARK_PLUGINS : []), ...ignoreStringPlugins(config.markdown.remarkPlugins ?? []), ]; break; @@ -162,7 +162,7 @@ export function getRehypePlugins( default: rehypePlugins = [ ...rehypePlugins, - ...(config.markdown.extendDefaultPlugins ? DEFAULT_REHYPE_PLUGINS : []), + ...(markdownShouldExtendDefaultPlugins(config) ? DEFAULT_REHYPE_PLUGINS : []), ...ignoreStringPlugins(config.markdown.rehypePlugins ?? []), ]; break; @@ -172,6 +172,13 @@ export function getRehypePlugins( return rehypePlugins; } +function markdownShouldExtendDefaultPlugins(config: AstroConfig): boolean { + return ( + config.markdown.extendDefaultPlugins || + (config.markdown.remarkPlugins.length === 0 && config.markdown.rehypePlugins.length === 0) + ); +} + function ignoreStringPlugins(plugins: any[]) { let validPlugins: PluggableList = []; let hasInvalidPlugin = false; diff --git a/packages/integrations/mdx/test/mdx-plugins.test.js b/packages/integrations/mdx/test/mdx-plugins.test.js index a5c9480ae..4cbfaae3e 100644 --- a/packages/integrations/mdx/test/mdx-plugins.test.js +++ b/packages/integrations/mdx/test/mdx-plugins.test.js @@ -24,6 +24,17 @@ describe('MDX plugins', () => { expect(selectTocLink(document)).to.not.be.null; }); + it('Applies GFM by default', async () => { + const fixture = await buildFixture({ + integrations: [mdx()], + }); + + const html = await fixture.readFile(FILE); + const { document } = parseHTML(html); + + expect(selectGfmLink(document)).to.not.be.null; + }); + it('supports custom rehype plugins', async () => { const fixture = await buildFixture({ integrations: [ |