Remark — это библиотека для работы с Markdown в
формате AST (Abstract Syntax Tree). Она позволяет разбирать текст
Markdown, модифицировать его структуру и генерировать обратно в
Markdown. Ключевой особенностью Remark является модульность: можно
подключать плагины для анализа, трансформации и проверки
Markdown-документов.
Rehype работает с HTML в формате AST. Она может
принимать как уже сгенерированный HTML, так и Markdown, преобразованный
через Remark в HTML. Rehype позволяет выполнять операции на уровне
структуры документа: добавление атрибутов, трансформации тегов, проверку
на валидность и оптимизацию.
Remark и Rehype тесно интегрируются между собой через экосистему
unified, что позволяет строить цепочки обработки текстов от
Markdown до HTML и обратно, с возможностью промежуточной обработки
AST.
markdown-it
- Преобразует Markdown в HTML напрямую, без работы с AST.
- Обеспечивает высокую скорость рендеринга.
- Позволяет подключать плагины, но менее гибок в трансформации
структуры Markdown.
- Подходит для проектов, где важна скорость и минимальная обработка
контента.
marked
- Популярный парсер Markdown, который также сразу генерирует
HTML.
- Легкий и быстрый, но возможности расширения через плагины
ограничены.
- Не предоставляет удобной работы с AST, что затрудняет сложные
преобразования или проверки структуры документа.
Showdown
- Еще один Markdown-парсер, ориентированный на простую конвертацию в
HTML.
- Поддержка плагинов ограничена, нет полноценной системы AST.
- Хорош для небольших проектов и статических страниц.
Альтернативы Rehype
PostHTML
- Позволяет работать с HTML через AST.
- Фокусируется на трансформации HTML и интеграции с
веб-проектами.
- Мощная система плагинов, аналогичная Rehype, но экосистема менее
интегрирована с Markdown.
Cheerio
- Более похож на jQuery для Node.js, позволяет парсить HTML и изменять
его DOM-подобно.
- Подходит для скрапинга и простых манипуляций, но не обеспечивает
строгую работу с AST.
- Меньше возможностей для трансформаций с сохранением структуры
документа.
htmlparser2
- Парсер HTML с возможностью генерации AST.
- Очень быстрый, но низкоуровневый: все операции над деревом требуют
ручного обхода и модификации.
- Требует больше кода для сложных трансформаций, чем Rehype.
Сравнительная таблица
| Библиотека |
Формат ввода |
Формат вывода |
Работа с AST |
Плагины |
Скорость |
Основная сфера применения |
| Remark |
Markdown |
Markdown/HTML |
Да |
Да |
Средняя |
Анализ и трансформация Markdown |
| markdown-it |
Markdown |
HTML |
Нет |
Частично |
Высокая |
Быстрая конвертация Markdown |
| marked |
Markdown |
HTML |
Нет |
Огранич |
Высокая |
Простые конвертации Markdown |
| Showdown |
Markdown |
HTML |
Нет |
Огранич |
Средняя |
Статические сайты, простые проекты |
| Rehype |
HTML |
HTML |
Да |
Да |
Средняя |
Манипуляции HTML через AST |
| PostHTML |
HTML |
HTML |
Да |
Да |
Средняя |
Веб-проекты, трансформации HTML |
| Cheerio |
HTML |
HTML |
Нет |
Нет |
Высокая |
Скрейпинг, манипуляции DOM |
| htmlparser2 |
HTML |
AST |
Да |
Нет |
Очень высокая |
Низкоуровневая работа с HTML |
Преимущества и ограничения
- Remark/Rehype обладают высокой гибкостью и мощной системой
плагинов, что позволяет создавать цепочки обработки от Markdown
до HTML с промежуточной трансформацией AST.
- Альтернативы типа markdown-it и marked выигрывают по
скорости и простоте, но теряют возможность сложных
проверок и модификаций структуры документа.
- Rehype, в сравнении с Cheerio и PostHTML, обеспечивает более
чистую и структурированную работу с AST, хотя требует
больше усилий на начальной настройке.
- Выбор библиотеки зависит от целей проекта: быстрое
преобразование Markdown → HTML или сложная модификация и анализ AST с
промежуточными шагами.
Remark и Rehype особенно выгодны для проектов, где важна
унифицированная обработка контента, соблюдение
стандартов и расширяемость через плагины. Альтернативы имеют смысл там,
где важна скорость или простота интеграции, а сложная
трансформация AST не требуется.