Библиотека Marked — это популярный парсер Markdown
для JavaScript, обеспечивающий высокую скорость и гибкость в обработке
текста. Одним из ключевых параметров конфигурации является
gfm (GitHub Flavored Markdown), который задает поддержку
расширенного синтаксиса Markdown в стиле GitHub.
Параметр gfm принимает логическое значение
(true или false) и определяет, будет ли Marked
интерпретировать текст с учетом расширений GitHub Flavored Markdown.
Если значение true, библиотека включает поддержку таких
особенностей, как:
tables)task lists)autolinks)По умолчанию значение gfm установлено в
true, что соответствует поведению Markdown на GitHub.
Таблицы:
| Имя | Возраст | Город |
|----------|--------|------------|
| Алексей | 30 | Москва |
| Мария | 25 | Санкт-Петербург |
С включенным gfm: true Marked корректно преобразует
таблицу в HTML:
<table>
<thead>
<tr>
<th>Имя</th>
<th>Возраст</th>
<th>Город</th>
</tr>
</thead>
<tbody>
<tr>
<td>Алексей</td>
<td>30</td>
<td>Москва</td>
</tr>
<tr>
<td>Мария</td>
<td>25</td>
<td>Санкт-Петербург</td>
</tr>
</tbody>
</table>
Списки задач:
- [x] Сделать домашнее задание
- [ ] Прочитать книгу
- [ ] Подготовить презентацию
В HTML это превратится в чекбоксы:
<ul>
<li><input type="checkbox" checked disabled> Сделать домашнее задание</li>
<li><input type="checkbox" disabled> Прочитать книгу</li>
<li><input type="checkbox" disabled> Подготовить презентацию</li>
</ul>
С включенным gfm Marked автоматически распознает URL и
email-адреса и превращает их в ссылки:
https://example.com
user@example.com
Результат HTML:
<a href="https://example.com">https://example.com</a>
<a href="mailto:user@example.com">user@example.com</a>
Кроме того, обычный перенос строки в тексте также становится переносом в HTML, что соответствует поведению GitHub.
gfmПараметр gfm задается при вызове функции
marked через объект опций:
import { marked } from 'marked';
const options = {
gfm: true,
};
const markdown = `
# Заголовок
- [x] Выполнено
- [ ] В процессе
`;
const html = marked(markdown, options);
console.log(html);
Если установить gfm: false, расширенные возможности
GitHub Markdown отключаются:
Это позволяет использовать Marked в более строгом стандарте классического Markdown.
Параметр gfm тесно связан с настройками:
tables — отдельная опция, позволяющая
включать или отключать таблицы независимо от gfm. При
gfm: true таблицы включены по умолчанию.breaks — управление переносами строк.
При gfm: true переносы строк включаются по умолчанию, но
можно переопределить через breaks: false.smartLists — улучшенные списки,
которые чаще всего используются вместе с gfm.gfm: true.gfm: false.Гибкость параметра gfm делает Marked универсальным
инструментом для работы с Markdown как в веб-приложениях, так и в
серверных проектах на Node.js. Он позволяет выбирать между строгим
стандартом Markdown и расширенным функционалом, привычным для
GitHub.