Rspress supports MDX, a powerful way to develop content.
MDX is a superset of Markdown, which means you can write Markdown files as usual. For example:
When you want to use React components in Markdown files, you should name your files with .mdx
extension. For example:
All mdx files are also components and they can import each other:
Relevant components need to be excluded from routing meta info through route.exclude configuration.
You can also place components in an adjacent directory outside root. For example:
You can add Front Matter at the beginning of your Markdown file, which is a YAML-formatted object that defines some metadata. For example:
Note: By default, Rspress uses h1 headings as html headings.
You can also access properties defined in Front Matter in the body, for example:
The previously defined properties will be passed to the component as frontmatter
properties. So the final output will be:
You can use the :::
syntax to create custom containers and support custom titles. For example:
Input:
Output:
This is a block
of type note
This is a block
of type tip
This is a block
of type info
This is a block
of type warning
This is a block
of type danger
This is a block
of type details
This is a block
of Custom Title
This is a block
of Custom Title
You can use the ``` syntax to create code blocks and support custom titles. For example:
Input:
Output:
If you want to display line numbers, you can enable the showLineNumbers
option in the config file:
If you want to wrap long code line by default, you can enable the defaultWrapCode
option in the config file:
You can also apply line highlighting and code block title at the same time, for example:
Input:
Ouput:
By default, Rspress will automatically generate ids based on the content of each title. This id will also serve as the content of the anchor. You can use the following syntax to customize the id of the header:
Where custom-id
is your custom id.
In default mode, Rspress uses the Rust version of the MDX compiler, which is faster than the JavaScript version. However, the Rust version of the compiler does not support custom plugins.
If you need to add a custom MDX compiler plugin, you can disable the Rust version of the MDX compiler through the following config and switch to the JavaScript version of the compiler:
Whether to use the Rust version of the MDX compiler. For example:
You can also provide a function to determine which files use the Rust version of MDX compiler. For example:
The bottom layer of mdxRs
is based on the @rspress/mdx-rs-binding library developed by Rspress. The performance is 10+ times higher than the JS version of the MDX compiler, but the JS version of the plugin is not yet supported.