Markdown-it — это гибкая и мощная библиотека для парсинга Markdown в JavaScript, поддерживающая расширения через плагины. Один из таких плагинов — markdown-it-emoji, который позволяет преобразовывать короткие текстовые обозначения эмодзи в соответствующие символы Unicode. Это расширение особенно полезно для блогов, чатов и любых веб-приложений, где требуется поддержка смайлов без ручного вставления Unicode.
Для работы с плагином необходимо установить его через npm:
npm install markdown-it markdown-it-emoji
После установки подключение выглядит следующим образом:
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();
const emoji = require('markdown-it-emoji');
md.use(emoji);
В результате Markdown-it будет автоматически преобразовывать
текстовые обозначения эмодзи, такие как :smile: или
:heart:, в соответствующие символы.
Для добавления пользовательских эмодзи используется метод
renderer.rules.emoji. Пример:
md.use(emoji);
md.renderer.rules.emoji = function(token, idx) {
const emojiName = token[idx].content;
const customEmojis = {
'party': '?',
'rocket': '?'
};
return customEmojis[emojiName] || token[idx].content;
};
console.log(md.render('Давай устроим вечеринку :party: и полетим на :rocket:!'));
Результат:
Давай устроим вечеринку ? и полетим на ?!
Иногда требуется использовать изображения вместо Unicode-эмодзи. Для этого нужно изменить правило рендеринга:
md.renderer.rules.emoji = function(token, idx) {
const emojiName = token[idx].content;
return `<img src="/emojis/${emojiName}.png" alt="${emojiName}" class="emoji">`;
};
console.log(md.render('Привет :smile:!'));
Этот подход позволяет полностью контролировать стилизацию эмодзи через CSS.
Markdown-it-emoji полностью совместим с парсерами Markdown-it и может применяться к различным форматам:
md.render('Привет, мир :smile:!');
md.render('# Добро пожаловать :wave:');
md.render('- Список задач :memo:');
md.render('> Важное сообщение :exclamation:');
md.render('| Этап | Статус |\n|------|--------|\n| Разработка | :rocket: |');
Плагин предоставляет объект emoji.emoji для доступа и
изменения словаря:
const mdEmoji = require('markdown-it-emoji');
md.use(mdEmoji);
mdEmoji.emoji['custom'] = '?';
console.log(md.render('Это мое :custom: эмодзи!'));
Теперь :custom: будет заменяться на символ звезды
?.
Плагин корректно обрабатывает смешанный контент: текст, HTML-теги и эмодзи. Например:
md.render('Привет <b>друзья</b> :smile:');
Выходной HTML сохраняет все теги и добавляет эмодзи на своё место:
<p>Привет <b>друзья</b> ?</p>
Markdown-it-emoji незначительно влияет на производительность, так как парсинг эмодзи выполняется на этапе токенизации. Для больших текстов и массового рендеринга рекомендуется:
Плагин поддерживает все современные версии Node.js и легко интегрируется в фронтенд с использованием bundlers (Webpack, Vite, Parcel). Он также может работать в связке с:
Такое сочетание позволяет создавать мощные редакторы с поддержкой эмодзи и расширенной функциональностью Markdown.
:smile: — улыбающееся лицо:heart: — сердце:thumbsup: — лайк:tada: — праздничное конфетти:fire: — огонь:rocket: — ракетаПлагин распознаёт все стандартные GitHub-emoji и позволяет добавлять собственные по мере необходимости.
Markdown-it-emoji расширяет возможности Markdown-it, позволяя легко работать с эмодзи в текстах любого объёма. Гибкость настройки и поддержка кастомных правил рендеринга делают его универсальным инструментом для веб-приложений, блогов и мессенджеров.