Параметр breaks

Параметр breaks в Marked отвечает за способ обработки переносов строк в Markdown. По умолчанию Markdown игнорирует одиночные переносы строк, объединяя текст в один абзац, если строки не разделены пустой строкой. Параметр breaks изменяет это поведение, заставляя Marked преобразовывать одиночные переносы строк в <br>.

Синтаксис и подключение

При инициализации Marked можно задать объект опций, где указывается значение breaks:

const marked = require('marked');

marked.setOptions({
  breaks: true
});

Значение параметра:

  • true — каждый одиночный перенос строки будет преобразован в тег <br>.
  • false — сохраняется стандартное поведение Markdown (одиночные переносы строк игнорируются).

Пример обработки:

const markdownString = `Это первая строка
Это вторая строка`;

const html = marked(markdownString);
console.log(html);
  • При breaks: false результат:
<p>Это первая строка
Это вторая строка</p>
  • При breaks: true результат:
<p>Это первая строка<br>
Это вторая строка</p>

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

Параметр breaks особенно полезен при обработке текстов из текстовых редакторов или форм, где пользователи вводят текст с ручными переносами строк. В стандартном Markdown такой текст без пустых строк между абзацами будет объединен в один блок. Установка breaks: true сохраняет визуальную структуру текста, соответствующую вводимым пользователем переносам строк.

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

function renderUserComment(comment) {
  return marked(comment, { breaks: true });
}

const commentText = `Привет!
Как дела?
Это мой первый комментарий.`;

console.log(renderUserComment(commentText));

Результат:

<p>Привет!<br>
Как дела?<br>
Это мой первый комментарий.</p>

Совместимость с другими опциями

Параметр breaks работает независимо от большинства других опций Marked, таких как gfm или headerIds. Однако стоит учитывать:

  • Если gfm отключен, некоторые возможности Markdown (таблицы, чекбоксы) могут быть недоступны, но breaks все равно будет работать.
  • При генерации HTML с безопасными режимами (sanitize: true) <br> сохраняется, так как это разрешенный тег.

Влияние на рендеринг абзацев

Важно понимать, что breaks: true не создает новых <p>-абзацев, а лишь добавляет <br> внутри существующего абзаца. Для создания отдельного абзаца по стандарту Markdown нужно оставить пустую строку между блоками текста:

Первая строка

Вторая строка

С breaks: true это преобразуется так же, как с breaks: false, но одиночные переносы внутри абзацев будут превращены в <br>.

Рекомендации по использованию

  • Использовать breaks: true, если текст вводится напрямую пользователями и важно сохранить визуальные переносы.
  • Оставлять breaks: false при создании контента, где Markdown-синтаксис важнее визуальной структуры текста.
  • Проверять совместимость с CSS, так как <br> может влиять на верстку при ограниченной высоте контейнера.

Параметр breaks предоставляет гибкий способ контролировать преобразование переносов строк, делая Marked более удобным инструментом для рендеринга Markdown в HTML в условиях динамического контента.