Инициализация парсера

Для начала необходимо установить библиотеку через 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 });

После такой конфигурации парсер поддерживает:

  • HTML и переносы строк
  • Автоматические ссылки
  • Типографику и эмодзи
  • Сноски и якоря заголовков

Это обеспечивает полноценную работу с Markdown в сложных проектах.