Пресеты конфигурации

Markdown-it — это мощная и гибкая библиотека для парсинга Markdown в JavaScript, позволяющая тонко настраивать процесс обработки текста. Одним из ключевых элементов её конфигурации являются пресеты — заранее определённые наборы опций, которые обеспечивают быстрый старт с оптимальными настройками для различных сценариев.

Основные типы пресетов

Markdown-it включает несколько встроенных пресетов, каждый из которых отличается набором включённых плагинов и опций:

  1. default Базовый пресет, включающий поддержку стандартного синтаксиса Markdown, безопасные ссылки и обработку основных тегов. Идеален для общего использования.

  2. commonmark Соответствует спецификации CommonMark. Отключает нестандартные расширения, такие как таблицы и ссылки на автоидентификаторы заголовков, чтобы обеспечить строгую совместимость.

  3. zero Минимальный пресет, который практически ничего не включает. Используется для построения собственного набора расширений с нуля.

Подключение и использование пресета

Для инициализации Markdown-it с пресетом используется конструкция:

const MarkdownIt = require('markdown-it');
const md = new MarkdownIt('default'); // или 'commonmark', 'zero'

Пресет автоматически задаёт базовые значения для следующих ключевых опций:

  • html — разрешение на встраивание HTML.
  • xhtmlOut — использование XHTML-совместимого вывода.
  • breaks — автоматическая конвертация переносов строк в <br>.
  • linkify — автоматическое преобразование URL в ссылки.
  • typographer — замена стандартных символов на типографские (например, кавычек и тире).

Настройка пресета после инициализации

Даже при использовании пресета доступно изменение отдельных параметров:

const md = new MarkdownIt('default', {
  html: true,       // разрешаем HTML
  linkify: true,    // активируем автоматические ссылки
  typographer: true // включаем типографику
});

Это позволяет сохранить преимущества пресета, одновременно адаптируя его под конкретные требования проекта.

Добавление и отключение плагинов

Пресеты также включают стандартные плагины Markdown-it, например для обработки таблиц, ссылок с заголовками и списков задач. Для их настройки используются методы use и disable:

// Подключение плагина
md.use(require('markdown-it-emoji'));

// Отключение встроенного плагина
md.disable('table');

Каждый пресет определяет, какие плагины подключаются по умолчанию. Использование zero позволяет полностью контролировать этот процесс.

Влияние пресета на парсинг

Выбор пресета напрямую влияет на следующие аспекты:

  • Синтаксис Markdown: строгий CommonMark или расширенный GitHub-flavored Markdown (GFM).
  • Поддержка HTML и спецсимволов: стандартный default включает безопасное встраивание HTML, zero оставляет его отключённым.
  • Типографика и автозамены: включены только в пресет default, отключены в commonmark и zero.
  • Плагины по умолчанию: таблицы, списки задач, эмодзи — их наличие зависит от выбранного пресета.

Практические рекомендации

  • Быстрый старт: использовать default для проектов, где важна поддержка расширенного Markdown.
  • Строгая совместимость: выбирать commonmark, когда требуется соответствие стандарту Markdown.
  • Максимальная гибкость: пресет zero подходит для создания уникальных конфигураций, когда нужно подключать только определённые плагины.

Настройка собственного пресета

Markdown-it позволяет создавать кастомные пресеты, комбинируя опции и плагины:

function myPreset(md) {
  md.set({ html: true, breaks: true });
  md.use(require('markdown-it-emoji'));
  md.use(require('markdown-it-anchor'));
  return md;
}

const md = myPreset(new MarkdownIt('zero'));

Это обеспечивает повторное использование настроек и упрощает управление проектами с несколькими Markdown-редакторами.

Итоговые свойства пресетов

Пресет HTML Типографика Linkify Плагины по умолчанию
default Да Да Да Таблицы, эмодзи, списки задач
commonmark Нет Нет Нет Минимальные, только стандартный синтаксис
zero Нет Нет Нет Нет, полностью настраиваемый

Пресеты в Markdown-it создают основу, на которой строится дальнейшая конфигурация. Правильный выбор и модификация пресета позволяет оптимизировать работу с Markdown, облегчая поддержку и расширение функционала.