Для начала необходимо установить библиотеку через npm:
npm install markdown-it
После установки подключение происходит стандартным образом:
const MarkdownIt = require('markdown-it');
Для использования в современных проектах с модульной системой ES6
можно применить import:
import MarkdownIt from 'markdown-it';
Основным объектом является экземпляр класса MarkdownIt.
Создание производится с возможностью передачи конфигурационных
опций:
const md = new MarkdownIt({
html: true,
xhtmlOut: false,
breaks: true,
linkify: true,
typographer: true,
quotes: '“”‘’'
});
Описание ключевых опций:
html — разрешает HTML-теги в исходном тексте.xhtmlOut — выводит самозакрывающиеся теги в формате
XHTML.breaks — превращает переносы строк в
<br>.linkify — автоматически преобразует URL и email в
ссылки.typographer — включает типографские замены, такие как
кавычки и дефисы.quotes — задает стиль кавычек для типографических
замен.Экземпляр MarkdownIt предоставляет несколько методов для
преобразования Markdown в HTML:
md.render(markdownString);
render — принимает строку Markdown и возвращает
HTML.renderInline — выполняет парсинг только для одной
строки без обрамляющих тегов <p>.use(plugin, options) — подключает плагины для
расширения функциональности.Пример использования:
const result = md.render('# Заголовок 1\n\nТекст с **жирным выделением**');
console.log(result);
Вывод будет:
<h1>Заголовок 1</h1>
<p>Текст с <strong>жирным выделением</strong></p>
Markdown-it позволяет управлять правилами рендеринга с помощью
объектов renderer.rules. Каждое правило связано с
конкретным токеном Markdown:
md.renderer.rules.strong_open = function(tokens, idx) {
return '<b>';
};
md.renderer.rules.strong_close = function(tokens, idx) {
return '</b>';
};
Это позволяет заменить стандартное <strong> на
<b> для жирного текста.
Подключение плагинов происходит через метод use.
Библиотека предоставляет поддержку множества расширений, например, для
таблиц, подсветки кода, чекбоксов:
const markdownItAnchor = require('markdown-it-anchor');
md.use(markdownItAnchor, {
permalink: true,
permalinkSymbol: '¶'
});
markdown-it-anchor — автоматически генерирует якоря для
заголовков.permalink — добавляет символ ссылки к каждому
заголовку.permalinkSymbol — задает символ, отображаемый рядом с
заголовком.Можно создавать собственные правила обработки Markdown, комбинируя плагины и переопределяя существующие. Пример кастомного рендера для параграфов:
md.renderer.rules.paragraph_open = function(tokens, idx) {
return '<p class="custom-paragraph">';
};
Это позволяет применять индивидуальные стили или обертки для любых элементов Markdown.
При необходимости безопасного парсинга можно отключать HTML-теги и внешние ссылки:
const safeMd = new MarkdownIt({
html: false,
linkify: true,
typographer: true
});
Это предотвращает выполнение потенциально вредоносного HTML в тексте.
Объединение всех возможностей:
const md = new MarkdownIt({
html: true,
breaks: true,
linkify: true,
typographer: true
})
.use(require('markdown-it-emoji'))
.use(require('markdown-it-footnote'))
.use(require('markdown-it-anchor'), { permalink: true });
После такой конфигурации парсер поддерживает:
Это обеспечивает полноценную работу с Markdown в сложных проектах.