Об этом проекте
remark — это процессор markdown, построенный вокруг плагинов и входящий в коллектив unified. Вместо того чтобы рассматривать markdown как обычный текст, он разбирает его в структурированное абстрактное синтаксическое дерево (mdast), которое плагины могут анализировать и изменять до того, как содержимое будет снова сериализовано.
Монорепозиторий содержит несколько пакетов: remark-parse (markdown в синтаксическое дерево), remark-stringify (синтаксическое дерево обратно в markdown), remark (объединяет unified, parse и stringify для работы markdown-to-markdown) и remark-cli (интерфейс командной строки для анализа и форматирования файлов markdown).
Ключевые характеристики, описанные в README:
- По умолчанию соответствует CommonMark, с поддержкой GFM или MDX через плагины.
- Обработка на основе AST делает программный анализ и преобразование простыми.
- Экосистема из более чем 150 плагинов, включая remark-gfm (GitHub flavored markdown), remark-lint (проверка стиля), remark-toc (генерация оглавления) и remark-rehype (markdown в HTML).
- Используется на серверах, клиентах, в CLI и Deno.
Типичные варианты использования включают преобразование markdown в HTML (часто в сочетании с экосистемой rehype и rehype-sanitize), включение расширений синтаксиса, таких как GFM и YAML frontmatter, линтинг markdown для согласованности и форматирование файлов markdown в проекте через CLI и запись remarkConfig в package.json.
Проект полностью типизирован с помощью TypeScript, типы mdast доступны через @types/mdast. В README отмечены соображения безопасности: поскольку markdown может превращаться в HTML, неправильная обработка может подвергнуть пользователей межсайтовому скриптингу, поэтому при создании HTML рекомендуется rehype-sanitize; большие или враждебные входные данные также могут вызывать проблемы с производительностью или сбои, поэтому рекомендуется ограничивать размер входных данных и обрабатывать их в отдельном потоке или worker. Риск плагинов следует оценивать индивидуально.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.