rsnext/packages/next-mdx
2023-01-05 14:20:56 -08:00
..
index.d.ts Add type definitions for next/mdx (#36815) 2022-05-29 05:21:25 +00:00
index.js feat(next/mdx): support experimental mdx-rs loader (#41919) 2022-11-02 18:24:05 -07:00
license.md Update license year (#44403) 2023-01-01 11:12:49 +01:00
mdx-rs-loader.js feat(next/mdx): support experimental mdx-rs loader (#41919) 2022-11-02 18:24:05 -07:00
package.json v13.1.2-canary.1 2023-01-05 14:20:56 -08:00
readme.md Fix mdx docs (#40402) 2022-09-09 12:12:36 -07:00

Next.js + MDX

Use MDX with Next.js

Installation

npm install @next/mdx @mdx-js/loader @mdx-js/react

or

yarn add @next/mdx @mdx-js/loader @mdx-js/react

Usage

Create a next.config.js in your project

// next.config.js
const withMDX = require('@next/mdx')()
module.exports = withMDX()

Optionally you can provide MDX plugins:

// next.config.js
const withMDX = require('@next/mdx')({
  options: {
    remarkPlugins: [],
    rehypePlugins: [],
  },
})
module.exports = withMDX()

Optionally you can add your custom Next.js configuration as parameter

// next.config.js
const withMDX = require('@next/mdx')()
module.exports = withMDX({
  webpack(config, options) {
    return config
  },
})

Optionally you can match other file extensions for MDX compilation, by default only .mdx is supported

// next.config.js
const withMDX = require('@next/mdx')({
  extension: /\.(md|mdx)$/,
})
module.exports = withMDX()

Top level .mdx pages

Define the pageExtensions option to have Next.js handle .md and .mdx files in the pages directory as pages:

// next.config.js
const withMDX = require('@next/mdx')({
  extension: /\.mdx?$/,
})
module.exports = withMDX({
  pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'md', 'mdx'],
})

TypeScript

Follow this guide from the MDX docs.