Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rspack-contrib/rsbuild-plugin-mdx

An Rsbuild plugin to provide support for MDX.
https://github.com/rspack-contrib/rsbuild-plugin-mdx

rsbuild rsbuild-plugin rspack

Last synced: about 12 hours ago
JSON representation

An Rsbuild plugin to provide support for MDX.

Awesome Lists containing this project

README

        

# @rsbuild/plugin-mdx

An Rsbuild plugin to provide support for [MDX](https://github.com/mdx-js/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.



npm version

license

## Usage

Install:

```bash
npm add @rsbuild/plugin-mdx -D
```

Add plugin to your `rsbuild.config.ts`:

```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](https://www.npmjs.com/package/@mdx-js/loader) for detailed usage.

- **Type:** `MdxLoaderOptions`
- **Default:** `{}`
- **Example:**

```ts
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.

- **Type:** `string[]`
- **Default:** `['.mdx', '.md']`

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

```ts
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:

```ts title="src/env.d.ts"
declare module "*.md" {
let MDXComponent: () => JSX.Element;
export default MDXComponent;
}
declare module "*.mdx" {
let MDXComponent: () => JSX.Element;
export default MDXComponent;
}
```

## License

[MIT](./LICENSE).