- Stable
3.0.0
Toggle Menu
Eleventy
5.81sGatsby
43.36sMDXAdded in v3.0.0
Template Languages:
| Eleventy Short Name | File Extension | npm Package |
|---|---|---|
mdx |
.mdx |
@mdx-js/node-loader |
- Related languages: Markdown, JSX, Custom
- Front matter is not yet supported in MDX files.
- While Markdown files are preprocessed as Liquid, MDX files are not preprocessed by any other template syntax.
INFO:
MDX requires ESM. This means your project
package.json must contain "type": "module" or your configuration file must use the .mjs file extension, e.g. eleventy.config.mjs.Configuration
Added in v3.0.0MDX provides a Node.js loader (@mdx-js/node-loader on npm). We can add this to our Eleventy configuration file to render *.mdx files.
eleventy.config.js
import {renderToStaticMarkup} from 'react-dom/server'
import {register} from 'node:module';
register('@mdx-js/node-loader', import.meta.url);
export default function(eleventyConfig) {
eleventyConfig.addExtension("mdx", {
key: "11ty.js",
compile: () => {
return async function(data) {
let content = await this.defaultRenderer(data);
return renderToStaticMarkup(content);
};
}
});
};
Now run Eleventy and tell it to process mdx files:
npx @11ty/eleventy --formats=mdx
Alternatively, you can add eleventyConfig.addTemplateFormats("mdx") to your configuration file.
Example MDX Template
export function Thing() {
return <>World!</>
}
# Hello, <Thing />
The above is rendered as <h1>Hello, World!</h1>.
Read more on the What is MDX? docs.
