MDX — это расширение Markdown, которое позволяет использовать JSX внутри файлов Markdown. Для эффективной работы с MDX требуется определённая среда, обеспечивающая поддержку JavaScript и сборку компонентов. Ниже приведены ключевые системные требования и рекомендации для настройки рабочей среды.
Для работы с MDX необходима среда Node.js. Минимальная поддерживаемая версия — Node.js 14. Рекомендуется использовать LTS-релизы, чтобы избежать проблем с совместимостью зависимостей.
node -v
npm -v
Альтернативно, можно использовать пакетный менеджер Yarn, который также полностью поддерживает работу с MDX и связанными библиотеками:
yarn -v
MDX требует компиляции JSX-кода в обычный JavaScript. Для этого необходима среда сборки, чаще всего на базе Webpack или Vite:
babel-loader
для обработки JSX.@mdx-js/rollup.Пример базовой конфигурации для Webpack с MDX:
module.exports = {
module: {
rules: [
{
test: /\.mdx?$/,
use: [
'babel-loader',
'@mdx-js/loader'
]
}
]
}
};
MDX строится на JSX, а значит, требует React:
Также рекомендуется установить следующие библиотеки для интеграции MDX с React:
npm install @mdx-js/react
Эта библиотека предоставляет провайдеры и контекст для корректной работы компонентов внутри MDX-файлов.
MDX отлично интегрируется с TypeScript. Для корректной работы следует:
npm install typescript @types/react
{
"compilerOptions": {
"jsx": "react-jsx",
"allowJs": true,
"esModuleInterop": true,
"moduleResolution": "node"
},
"include": ["src"]
}
declare module '*.mdx' {
let MDXComponent: (props: any) => JSX.Element;
export default MDXComponent;
}
Рекомендуется использовать редакторы с поддержкой JSX и MDX:
VSCode с расширениями:
MDX — подсветка синтаксиса MDXES7+ React/Redux/React-Native snippets — ускоряет
написание компонентовPrettier — форматирование кодаДля комфортной работы с проектами на MDX рекомендуется:
Эти параметры критичны для крупных проектов с множеством MDX-файлов и сложными компонентами.
Суммируя минимальный набор для работы с MDX в современном JavaScript-проекте:
Эта конфигурация обеспечивает стабильную работу MDX, поддержку JSX и интеграцию с современными фреймворками.