Markdown-it — это высокопроизводительная библиотека для преобразования текста в формате Markdown в HTML. Она построена с акцентом на расширяемость, совместимость с CommonMark и поддержку плагинов. Основное преимущество Markdown-it заключается в возможности контролировать весь процесс парсинга и рендеринга, а также легко интегрироваться с другими инструментами JavaScript.
Для установки используется npm:
npm install markdown-it
После установки библиотеку можно подключить и создать экземпляр:
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();
Базовое преобразование Markdown в HTML выполняется через метод
render:
const result = md.render('# Заголовок\n\nТекст параграфа.');
console.log(result);
Вывод будет следующим:
<h1>Заголовок</h1>
<p>Текст параграфа.</p>
Markdown-it позволяет настраивать множество опций, влияющих на поведение парсера и рендерера. Основные из них:
html — разрешает вставку HTML в
Markdown (по умолчанию false).xhtmlOut — выводит теги в формате
XHTML (<br /> вместо <br>).breaks — переводит одиночные переводы
строк в <br> (полезно для совместимости с
GitHub-flavored Markdown).linkify — автоматически превращает URL
и email в ссылки.typographer — включает расширенные
возможности типографики (замена кавычек, тире и т.д.).Пример конфигурации:
const md = new MarkdownIt({
html: true,
linkify: true,
typographer: true
});
Markdown-it разделяет процесс преобразования на несколько этапов:
Каждый токен имеет свойства:
type — тип токена (heading_open,
paragraph_open и т.д.).tag — HTML-тег, соответствующий токену.content — текстовое содержимое.children — массив дочерних токенов (для вложенных
элементов).Пример создания токенов вручную:
const token = {
type: 'paragraph_open',
tag: 'p',
attrs: null,
map: [0, 1],
nesting: 1,
level: 0,
children: []
};
Markdown-it поддерживает подключение плагинов, что позволяет расширять функциональность без изменения ядра. Плагины могут:
Пример подключения плагина markdown-it-emoji:
const md = new MarkdownIt();
const emoji = require('markdown-it-emoji');
md.use(emoji);
console.log(md.render('I :heart: Markdown-it!'));
Когда включена опция html: true, библиотека позволяет
вставлять произвольный HTML. Для безопасного использования на сайтах с
пользовательским контентом рекомендуется комбинировать Markdown-it с
библиотеками для очистки HTML, такими как DOMPurify или
sanitize-html.
Markdown-it предоставляет механизм переопределения рендеринга отдельных токенов через renderer rules. Это позволяет полностью контролировать итоговый HTML:
md.renderer.rules.heading_open = function (tokens, idx) {
return `<h${tokens[idx].tag.slice(1)} class="custom-heading">`;
};
Можно изменить рендер для любых типов токенов: параграфов, ссылок, изображений, списков.
Markdown-it сочетает в себе точность стандартного Markdown и расширяемость для современных веб-приложений, что делает библиотеку универсальным инструментом для работы с Markdown в JavaScript.