Минификация MDX представляет собой процесс уменьшения объёма
исходного кода файлов .mdx, при этом сохраняется их
функциональность. Основная цель минификации — ускорение загрузки
страниц, снижение потребления трафика и повышение производительности
приложений, построенных на React и Next.js, использующих MDX для
рендеринга документации и контента.
Удаление пробелов и переносов строк Каждая пустая строка, лишний пробел или табуляция увеличивает размер исходного файла. Минификаторы автоматически удаляют все ненужные пробелы между тегами JSX и Markdown-разметкой, оставляя код компактным. Пример:
# Заголовок
Текст параграфа
После минификации может выглядеть так:
#Заголовок Текст параграфа
Для MDX важно сохранять структуру заголовков и списков, поэтому минификатор учитывает синтаксис Markdown и JSX одновременно.
Оптимизация JSX-компонентов MDX позволяет внедрять React-компоненты прямо в Markdown. Минификаторы удаляют ненужные атрибуты, сокращают имена переменных, если это безопасно, и объединяют повторяющиеся элементы:
<Button type="primary" disabled={false}>Нажми меня</Button>
Минификация может преобразовать в:
<Button type="primary">Нажми меня</Button>
Атрибут disabled={false} удаляется, так как он не влияет
на функциональность.
Удаление комментариев Все строки комментариев,
как HTML (<!-- комментарий -->), так и JSX
({/* комментарий */}), удаляются для сокращения
размера:
{/* Этот компонент важен для тестирования */}
<Component />
Минифицируется в:
<Component />Слияние и сокращение строк Markdown Пустые строки между параграфами или списками могут быть объединены. Например:
- Пункт 1
- Пункт 2
После минификации:
- Пункт 1 - Пункт 2
При этом визуальное отображение в рендеринге сохраняется благодаря обработчику MDX.
@mdx-js/mdx с опцией remark и
rehype MDX использует плагины remark
для обработки Markdown и rehype для HTML/JSX. С помощью
плагина rehype-minify можно уменьшить размер кода:
import { compile } from '@mdx-js/mdx';
import rehypeMinify from 'rehype-preset-minify';
const code = `
# Заголовок
<Button>Клик</Button>
`;
const result = await compile(code, {
rehypePlugins: [rehypeMinify],
});Vite и Webpack MDX-файлы часто собираются через сборщики. Для минификации можно использовать:
vite-plugin-mdx с esbuild для удаления
пробелов и сокращения JSX.terser для минификации сгенерированного JS-кода после
трансформации MDX.Собственные скрипты минификации В проектах с
большим количеством MDX-контента полезно написать скрипт на Node.js,
который проходит по всем .mdx файлам, убирает лишние
переносы и комментарии, а затем сохраняет минифицированные
версии.
remark и rehype с
учётом структуры контента: некоторые списки или таблицы требуют
сохранения пустых строк.Минификация MDX является критически важной частью оптимизации приложений, где контент представлен через Markdown с встроенными React-компонентами. Правильная настройка плагинов и сборщиков позволяет сократить размер файлов в несколько раз, не теряя функциональности и визуальной структуры.