What is remark-emoji?
The remark-emoji npm package is a plugin for the remark processor that allows you to convert text-based emoji shortcodes into their corresponding Unicode emoji characters. This can be particularly useful for rendering markdown content with emojis in a more visually appealing way.
What are remark-emoji's main functionalities?
Convert Emoji Shortcodes to Unicode
This feature allows you to convert text-based emoji shortcodes (e.g., :heart:) into their corresponding Unicode emoji characters (❤️). The code sample demonstrates how to use the remark-emoji plugin with the remark processor to achieve this conversion.
const remark = require('remark');
const emoji = require('remark-emoji');
const markdown = 'I :heart: remark-emoji!';
remark()
.use(emoji)
.process(markdown, function (err, file) {
if (err) throw err;
console.log(String(file));
});
Other packages similar to remark-emoji
markdown-it-emoji
The markdown-it-emoji package is a plugin for the markdown-it parser that converts emoji shortcodes into Unicode emoji characters. It offers similar functionality to remark-emoji but is designed to work with the markdown-it ecosystem instead of remark.
emojione
The emojione package provides a comprehensive set of tools for working with emojis, including converting shortcodes to Unicode and vice versa. While it offers broader functionality beyond just markdown processing, it can be used in conjunction with markdown parsers to achieve similar results to remark-emoji.
emoji-dictionary
The emoji-dictionary package provides a simple way to convert emoji shortcodes to Unicode characters and vice versa. It is a lightweight alternative that can be integrated into various text processing workflows, including markdown processing, to achieve similar functionality to remark-emoji.
This is a remark plugin to replace :emoji:
to real UTF-8 emojis in text.
Accessibility support and Emoticon support are optionally available.
Demo
You can find a demo in the following Codesandbox.
Usage
remark().use(emoji [, options]);
import {remark} from 'remark';
import emoji from 'remark-emoji';
const doc = 'Emojis in this text will be replaced: :dog: :+1:';
remark().use(emoji).process(doc).then(file => {
console.log(String(file));
});
Note that this package is ESM only from v3.0.0 since remark packages migrated to ESM.
Options
options.accessible
Setting to true
makes the converted emoji text accessible with role
and aria-label
attributes. Each emoji
text is wrapped with <span>
element. Note that role
attribute is not allowed by default. Please add it to
the sanitization schema used by remark's HTML transformer.
For example,
import {remark} from 'remark';
import toHtml from 'remark-html';
import {defaultSchema} from 'hast-util-sanitize'
import emoji from 'remark-emoji';
const schema = structuredClone(defaultSchema);
schema.attributes['*'].push('role');
const compiler = remark()
.use(emoji, { accessible: true })
.use(toHtml, { sanitize: schema });
compiler.process('Hello :dog:!').then(file => {
console.log(String(file));
});
yields
Hello <span role="img" aria-label="dog emoji">🐶</span>!
Default value is false
.
options.padSpaceAfter
Setting to true
means that an extra whitespace is added after emoji.
This is useful when browser handle emojis with half character length and following character is hidden.
Default value is false
.
options.emoticon
Setting to true
means that emoticon shortcodes are supported (e.g. :-)
will be replaced by 😃). Default value is false
.
License
Distributed under the MIT License.