Библиотека Marked в JavaScript предоставляет гибкий
и высокопроизводительный механизм для парсинга Markdown в HTML. Ключевым
элементом настройки работы парсера является объект опций, который
задается через метод marked.setOptions. Этот объект
позволяет детально управлять поведением парсера, стилем генерации HTML и
безопасностью вывода.
renderer Позволяет указать
собственный объект Renderer, который отвечает за генерацию
HTML для каждого элемента Markdown. Пример создания кастомного
рендерера:
const renderer = new marked.Renderer();
renderer.heading = (text, level) => `<h${level} class="custom-heading">${text}</h${level}>`;
marked.setOptions({ renderer });
Это свойство особенно важно, когда требуется кастомизация тегов или добавление классов для стилизации.
gfm Булево значение, включающее или
отключающее поддержку GitHub Flavored Markdown (GFM).
true — включает поддержку GFM (таблицы, задачи,
автоматические ссылки).false — стандартный Markdown.breaks Управляет поведением
переносов строк.
true — переносы строк в исходном тексте преобразуются в
<br>.false — стандартное поведение Markdown, игнорирующее
одиночные переносы.smartLists Позволяет включить
«умные» списки:
true — правильное определение вложенных списков.false — стандартная генерация списков Markdown, которая
может быть менее предсказуемой при сложных вложениях.smartypants Включение замены
стандартных символов на типографские:
true — кавычки, тире, многоточия заменяются на
типографические аналоги.false — стандартные символы.xhtml Управляет генерацией
XHTML-совместимого HTML:
true — все теги самозакрывающиеся, например
<br />.false — обычный HTML.mangle и headerIds
headerIds — автоматическая генерация id
для заголовков (по умолчанию true).mangle — управляет экранированием email-адресов в
заголовках для защиты от спама (по умолчанию true).sanitize (устаревшее,
рекомендовано использовать marked.parse с
sanitize: false и собственными фильтрами) Используется
для очистки HTML от потенциально опасных тегов. При значении
true все HTML-теги будут удалены.
tokenizer Позволяет переопределить
стандартный механизм токенизации Markdown, чтобы реализовать собственные
синтаксические конструкции. Пример:
const tokenizer = {
codespan(src) {
if (src.startsWith('^^')) {
return { type: 'codespan', raw: src.slice(0, 4), text: src.slice(2, 4) };
}
}
};
marked.setOptions({ tokenizer });marked.setOptionsmarked.setOptions({
renderer: new marked.Renderer(),
gfm: true,
breaks: false,
smartLists: true,
smartypants: true,
xhtml: true,
headerIds: true,
mangle: false
});
В этом примере включены возможности GFM, интеллектуальные списки, типографические улучшения, XHTML-совместимый вывод, а также отключено маскирование email-адресов.
Использование marked.setOptions изменяет поведение всего
парсера глобально. Любые последующие вызовы marked.parse
или marked будут использовать указанные параметры. Это
позволяет настраивать библиотеку под конкретные требования проекта:
безопасность, стилизацию, поддержку расширенного Markdown.
smartypants и
breaks повышает читабельность текста без изменения
Markdown-разметки.mangle рекомендуется, если
требуется прямое использование email-адресов в заголовках без
преобразований.gfm и smartLists
критична для проектов, где важно корректное отображение таблиц и
вложенных списков.Вместо глобальной настройки через marked.setOptions
возможно передавать объект опций непосредственно в вызов
marked.parse:
marked.parse(markdownText, {
gfm: true,
breaks: true,
smartypants: true
});
Это позволяет иметь разные режимы обработки Markdown в рамках одного проекта без изменения глобальных настроек.
Эти возможности делают объект опций marked.setOptions
основным инструментом тонкой настройки работы Markdown-парсера,
обеспечивая полное управление генерацией HTML и безопасностью
вывода.