diff options
Diffstat (limited to 'packages/integrations/mdx/src')
-rw-r--r-- | packages/integrations/mdx/src/index.ts | 22 | ||||
-rw-r--r-- | packages/integrations/mdx/src/utils.ts | 12 |
2 files changed, 22 insertions, 12 deletions
diff --git a/packages/integrations/mdx/src/index.ts b/packages/integrations/mdx/src/index.ts index bd0278933..30f827dc8 100644 --- a/packages/integrations/mdx/src/index.ts +++ b/packages/integrations/mdx/src/index.ts @@ -1,7 +1,13 @@ import fs from 'node:fs/promises'; import { fileURLToPath } from 'node:url'; import { markdownConfigDefaults } from '@astrojs/markdown-remark'; -import type { AstroIntegration, ContainerRenderer, ContentEntryType, HookParameters } from 'astro'; +import type { + AstroIntegration, + AstroIntegrationLogger, + ContainerRenderer, + ContentEntryType, + HookParameters, +} from 'astro'; import astroJSXRenderer from 'astro/jsx/renderer.js'; import type { Options as RemarkRehypeOptions } from 'remark-rehype'; import type { PluggableList } from 'unified'; @@ -75,7 +81,7 @@ export default function mdx(partialMdxOptions: Partial<MdxOptions> = {}): AstroI }, }); }, - 'astro:config:done': ({ config }) => { + 'astro:config:done': ({ config, logger }) => { // We resolve the final MDX options here so that other integrations have a chance to modify // `config.markdown` before we access it const extendMarkdownConfig = @@ -84,7 +90,8 @@ export default function mdx(partialMdxOptions: Partial<MdxOptions> = {}): AstroI const resolvedMdxOptions = applyDefaultOptions({ options: partialMdxOptions, defaults: markdownConfigToMdxOptions( - extendMarkdownConfig ? config.markdown : markdownConfigDefaults + extendMarkdownConfig ? config.markdown : markdownConfigDefaults, + logger ), }); @@ -104,12 +111,15 @@ const defaultMdxOptions = { optimize: false, } satisfies Partial<MdxOptions>; -function markdownConfigToMdxOptions(markdownConfig: typeof markdownConfigDefaults): MdxOptions { +function markdownConfigToMdxOptions( + markdownConfig: typeof markdownConfigDefaults, + logger: AstroIntegrationLogger +): MdxOptions { return { ...defaultMdxOptions, ...markdownConfig, - remarkPlugins: ignoreStringPlugins(markdownConfig.remarkPlugins), - rehypePlugins: ignoreStringPlugins(markdownConfig.rehypePlugins), + remarkPlugins: ignoreStringPlugins(markdownConfig.remarkPlugins, logger), + rehypePlugins: ignoreStringPlugins(markdownConfig.rehypePlugins, logger), remarkRehype: (markdownConfig.remarkRehype as any) ?? {}, }; } diff --git a/packages/integrations/mdx/src/utils.ts b/packages/integrations/mdx/src/utils.ts index 9adf3586f..4705316cc 100644 --- a/packages/integrations/mdx/src/utils.ts +++ b/packages/integrations/mdx/src/utils.ts @@ -1,8 +1,8 @@ import type { Options as AcornOpts } from 'acorn'; import { parse } from 'acorn'; -import type { AstroConfig, SSRError } from 'astro'; +import type { AstroConfig, AstroIntegrationLogger, SSRError } from 'astro'; import matter from 'gray-matter'; -import { bold, yellow } from 'kleur/colors'; +import { bold } from 'kleur/colors'; import type { MdxjsEsm } from 'mdast-util-mdx'; import type { PluggableList } from 'unified'; @@ -85,22 +85,22 @@ export function jsToTreeNode( }; } -export function ignoreStringPlugins(plugins: any[]): PluggableList { +export function ignoreStringPlugins(plugins: any[], logger: AstroIntegrationLogger): PluggableList { let validPlugins: PluggableList = []; let hasInvalidPlugin = false; for (const plugin of plugins) { if (typeof plugin === 'string') { - console.warn(yellow(`[MDX] ${bold(plugin)} not applied.`)); + logger.warn(`${bold(plugin)} not applied.`); hasInvalidPlugin = true; } else if (Array.isArray(plugin) && typeof plugin[0] === 'string') { - console.warn(yellow(`[MDX] ${bold(plugin[0])} not applied.`)); + logger.warn(`${bold(plugin[0])} not applied.`); hasInvalidPlugin = true; } else { validPlugins.push(plugin); } } if (hasInvalidPlugin) { - console.warn( + logger.warn( `To inherit Markdown plugins in MDX, please use explicit imports in your config instead of "strings." See Markdown docs: https://docs.astro.build/en/guides/markdown-content/#markdown-plugins` ); } |