Home

Awesome

@rsbuild/plugin-mdx

An Rsbuild plugin to provide support for MDX.

MDX lets you use JSX in your markdown content. You can import components, such as interactive charts or alerts, and embed them within your content. This makes writing long-form content with components a blast.

<p> <a href="https://npmjs.com/package/@rsbuild/plugin-mdx"> <img src="https://img.shields.io/npm/v/@rsbuild/plugin-mdx?style=flat-square&colorA=564341&colorB=EDED91" alt="npm version" /> </a> <img src="https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square&colorA=564341&colorB=EDED91" alt="license" /> </p>

Usage

Install:

npm add @rsbuild/plugin-mdx -D

Add plugin to your rsbuild.config.ts:

// rsbuild.config.ts
import { pluginMdx } from "@rsbuild/plugin-mdx";

export default {
  plugins: [pluginMdx()],
};

After registering the plugin, you can import .mdx or .md files as components in your code.

Options

If you need to customize the compilation behavior of MDX, you can use the following configs.

mdxLoaderOptions

Options passed to @mdx-js/loader, please refer to @mdx-js/loader documentation for detailed usage.

pluginMdx({
  mdxLoaderOptions: {
    // Use Vue JSX
    jsxImportSource: "vue",
  },
});

extensions

Specify the file extensions to be compiled with MDX loader, including .md files and .mdx files by default.

For example, to only compile .mdx files, you can set it as:

pluginMdx({
  extensions: [".mdx"],
});

Type Declarations

In a TypeScript project, you need to add type definitions for *.mdx files so that TypeScript can recognize them correctly.

Create env.d.ts in the src directory and add the following content:

declare module "*.md" {
  let MDXComponent: () => JSX.Element;
  export default MDXComponent;
}
declare module "*.mdx" {
  let MDXComponent: () => JSX.Element;
  export default MDXComponent;
}

License

MIT.