Remark и Rehype — это мощные инструменты для обработки текстового контента в экосистеме JavaScript, работающие с разными уровнями представления данных. Remark ориентирован на работу с Markdown, тогда как Rehype предназначен для HTML-структур. Понимание того, когда использовать каждую библиотеку, позволяет выстроить эффективный и безопасный пайплайн обработки контента.
Remark является универсальным инструментом для анализа и трансформации Markdown. Ключевые сценарии использования:
Проверка и валидация контента Remark позволяет
проверять Markdown на соответствие стилевым правилам, обнаруживать
ошибки в синтаксисе, лишние пробелы, некорректные заголовки и ссылки.
Например, с помощью плагина remark-lint можно задавать
правила для организации заголовков, ограничения длины абзацев,
обязательного использования alt-тегов для изображений.
Трансформация и генерация контента Remark позволяет создавать плагины для автоматического добавления оглавления, нумерации заголовков, вставки метаданных. Это особенно полезно при генерации документации или статей, где структура Markdown должна быть стандартизирована.
Препроцессинг перед HTML-рендерингом Remark может подготовить Markdown к дальнейшей обработке в Rehype. Например, конвертировать специальные синтаксические расширения, такие как кастомные блоки или компоненты, в AST, удобный для дальнейшей трансформации.
Rehype работает с HTML-структурами и предоставляет возможности для их анализа, модификации и генерации. Основные сценарии применения:
Валидация HTML-кода Rehype позволяет проверять
корректность HTML-разметки, находить не закрытые теги, дублированные
атрибуты и некорректные вложения. Плагины вроде
rehype-validate помогают соблюдать стандарты и
предотвращать ошибки, которые могут вызвать некорректное отображение
страниц.
Трансформация HTML Можно автоматически модифицировать HTML-структуры: добавлять атрибуты к тегам, инлайнить стили, реорганизовывать дерево документа. Это особенно полезно при работе с Markdown, конвертированным через Remark в HTML, и при генерации статических сайтов.
Интеграция с React и другими фронтенд-библиотеками Rehype позволяет преобразовывать HTML в формат, совместимый с JSX. Это открывает возможность использовать Markdown-контент напрямую в компонентах React, сохраняя семантику и структуру документа.
На практике Remark и Rehype часто используются вместе, создавая последовательный процесс обработки контента:
Парсинг Markdown в AST Remark преобразует исходный Markdown в дерево узлов (MDAST — Markdown Abstract Syntax Tree), предоставляя структурированное представление документа.
Трансформация и расширение контента Плагины Remark модифицируют AST, добавляют метаданные, проверяют стиль и форматирование.
Конвертация в HTML Remark может передать AST в Rehype, который преобразует Markdown в HTML-дерево (HAST — HTML Abstract Syntax Tree) с сохранением структуры и атрибутов.
Финальная обработка HTML Rehype выполняет оптимизацию и доработку HTML: вставку классов, обработку ссылок, улучшение доступности, генерацию атрибутов для SEO.
Стратегический выбор между Remark и Rehype определяется тем, на каком уровне структуры контента требуется вмешательство: исходный Markdown или уже сгенерированный HTML.