Библиотека remark-emoji является плагином для
Remark, предназначенным для автоматической обработки и
замены текстовых обозначений эмодзи (например, :smile:) на
соответствующие Unicode-символы. Этот инструмент особенно полезен при
создании Markdown-контента, где требуется поддержка визуального
представления эмоций и значков без ручного вставления символов.
Для работы с remark-emoji необходимо установить его
через npm или yarn:
npm install remark remark-emoji
или
yarn add remark remark-emoji
Подключение плагина в коде JavaScript выглядит следующим образом:
import { remark } from 'remark';
import emoji from 'remark-emoji';
const markdown = 'Привет, мир! :smile:';
const processed = await remark()
.use(emoji)
.process(markdown);
console.log(String(processed));
В результате :smile: автоматически заменится на
соответствующий символ ?.
Замена текстовых кодов на эмодзи
remark-emoji обрабатывает стандартные коды вида
:emoji_name: и преобразует их в соответствующие
Unicode-символы. Полный список поддерживаемых кодов совпадает со
стандартом GitHub Emoji.
Кастомизация отображения Можно задать опции для плагина:
remark()
.use(emoji, { emoticon: true })
.process(':)'); // Преобразует текстовый смайлик в emoji
Опция emoticon: true позволяет преобразовывать
классические текстовые смайлики (:), :-),
:D) в Unicode-эмодзи.
remark()
.use(emoji, { output: 'shortcode' })
.process('Привет :smile:');
Опция output: 'shortcode' оставляет текстовое
представление внутри результата, что удобно для последующей
обработки.
remark-emoji работает на уровне AST Markdown (MDAST).
Для генерации HTML и дальнейшего взаимодействия с DOM часто используется
Rehype. Интеграция осуществляется через цепочку
плагинов:
import { remark } from 'remark';
import emoji from 'remark-emoji';
import remark2rehype from 'remark-rehype';
import { rehypeStringify } from 'rehype-stringify';
const markdown = 'Привет :smile:';
const html = await remark()
.use(emoji)
.use(remark2rehype)
.use(rehypeStringify)
.process(markdown);
console.log(String(html)); // <p>Привет ?</p>
Таким образом, текстовые коды эмодзи преобразуются в реальные символы, а затем конвертируются в HTML, готовый для рендеринга на веб-странице.
remark()
.use(emoji, {
pad: true,
emoticon: true,
plugins: [],
shortcodes: { coffee: '☕️', sun: '☀️' }
})
.process('Время :coffee:');
pad: true автоматически добавляет пробелы вокруг символов,
чтобы они корректно отображались рядом с текстом:remark()
.use(emoji, { pad: true })
.process('Привет:smile:мир');
Результат: Привет ? мир.
emoticon: true позволяет обрабатывать привычные
ASCII-смайлики:remark()
.use(emoji, { emoticon: true })
.process('Hello :)');
Результат: Hello ?.
Блоги и документация Автоматическое преобразование кодов эмодзи в Unicode улучшает читабельность Markdown-файлов и визуальное оформление статей.
Чат-приложения При парсинге сообщений пользователей текстовые смайлики и GitHub-коды превращаются в реальные эмодзи.
Системы генерации контента
remark-emoji совместим с любыми пайплайнами Markdown →
HTML, включая генераторы статических сайтов (Next.js,
Gatsby), что позволяет обогащать текст визуальными
символами без ручного вмешательства.
rehype-stringify для генерации HTML, так
как это гарантирует правильную обработку Unicode-символов.rehype-img, чтобы
интегрировать кастомные иконки.remark-emoji можно комбинировать с другими плагинами
Remark, например:
remark-gfm — для поддержки GitHub Flavored
Markdown.remark-breaks — для автоматического преобразования
переносов строк.remark-autolink-headings — для генерации якорных ссылок
на заголовки.При этом порядок подключения плагинов важен:
remark-emoji следует подключать перед
remark-rehype для корректной конвертации AST.
Эта библиотека обеспечивает гибкую и мощную систему работы с эмодзи, позволяя создавать Markdown-контент с живыми, динамичными визуальными элементами без усложнения обработки текста.