Добавляем поддержку MDX в Next.js приложение

Инструкция по добавлению поддержки MDX в Next.js приложение.

Добавляем поддержку MDX в Next.js приложение
Дата публикации
23.06.24
Время чтения
3 мин.
Автор
Алексей Баранов

Сегодня расскажем как можно добавить базовую поддержку MDX в Next.js приложение и использовать .mdx файлы в качестве страниц.

Что такое MDX?

MDX - это синтаксис, который позволяет использовать JSX-синтаксис в markdown контенте, ну или наоборот. Подробнее можно почитать тут.

Вот простой пример MDX синтаксиса:

import ComplexComponent from "@/app/_components/ComplexComponent";
import ImageWrap from "@/app/_components/ImageWrap";

# Тут заголовок

обычный текст

и React-компоненты:

- например, для картинок

<ImageWrap src={"путь к картинке"}/>

- или что-нибудь сложное

<ComplexComponent />

Описание процесса

Итак, для того чтобы добавить поддержку MDX в Next.js приложение необходимо:

Установка необходимых пакетов

Нам понадобятся пакеты:

  • @next/mdx - основной пакет, который дружит Next.js и MDX;
  • @mdx-js/loader - webpack loader для MDX файлов;
  • @types/mdx - необходим для нормальной работы с typescript;

Установим их следующими командами:

npm i -S @next/mdx
npm install -D @mdx-js/loader @types/mdx

Создание файла mdx-components.tsx

Теперь необходимо создать файл mdx-components.tsx и положить его в src/.

Файл mdx-components.tsx необходим, для того чтобы подружить MDX и Next.js приложение использующее App Router.

import type { MDXComponents } from "mdx/types";

export function useMDXComponents(components: MDXComponents): MDXComponents {
  return {
    ...components,
  };
}

Включение обработки .mdx файлов в next.config.js

Осталось только подправить конфиг (файл next.config.js) нашего приложения.

const withMDX = require("@next/mdx")();

/** @type {import('next').NextConfig} */
const nextConfig = {
  // Добавляем `mdx` в pageExtensions
  pageExtensions: ["js", "jsx", "mdx", "ts", "tsx"],
};

module.exports = withMDX(nextConfig);

Теперь вместо page.tsx для страниц можно использовать page.mdx! 🎉

Расширение для VSCode

Бонус для тех кто использует VSCode, есть неплохое расширение для поддержки MDX синтаксиса - MDX for Visual Studio Code;

На этом всё! 🎉

Расскажите о вашем проекте

Связаться иначе

Вам может быть интересно

Борьба с грамматическими ошибками в markdown файлах
Борьба с грамматическими ошибками в markdown файлах

Борьба с грамматическими ошибками в markdown файлах

3 мин.

Инструкция по использованию LTеX для борьбы с грамматическими ошибками в .md файлах...

Пост#инструменты
Добавляем подсветку кода (синтаксиса) в статический блог на Next.js
Добавляем подсветку кода (синтаксиса) в статический блог на Next.js

Добавляем подсветку кода (синтаксиса) в статический блог на Next.js

4 мин.

Инструкция по добавлению подсветки кода (синтаксиса) в статическом блоге на Next.js...

Пост#туториалы#nextjs
Добавляем JSON-LD разметку к блогу на Next.js
Добавляем JSON-LD разметку к блогу на Next.js

Добавляем JSON-LD разметку к блогу на Next.js

8 мин.

Инструкция по добавлению JSON-LD разметки к блогу на Next.js...

Пост#nextjs#seo
Добавляем robots.txt в Next.js приложение
Добавляем robots.txt в Next.js приложение

Добавляем robots.txt в Next.js приложение

5 мин.

Инструкция по добавлению robots.txt в Next.js приложение...

Пост#nextjs#seo
Frontend разработка
Frontend разработка

Frontend разработка

Разрабатываем интерфейсы, которые быстро работают, удобно используются и масштабируются вместе с продуктом.

Услуга#frontend#веб-разработка
Разработка вебсайтов
Разработка вебсайтов

Разработка вебсайтов

Сайт под ваш бизнес: от структуры и дизайна до запуска и масштабирования. Быстро, продуманно и с фокусом на результат.

Услуга#веб-разработка#сайты