node-emoji

Friendly emoji lookups and parsing utilities for Node.js. šŸ’–

All Contributors: 32 šŸ‘Ŗ Codecov Test Coverage Contributor Covenant License: MIT Sponsor: On GitHub Style: Prettier TypeScript: Strict npm package version Contributor Covenant

`node-emoji` provides a fun, straightforward interface on top of the following excellent libraries: - [`emojilib`](https://npmjs.org/package/emojilib): provides a list of emojis and keyword search on top of it - [`skin-tone`](https://npmjs.org/package/skin-tone): parses out base emojis from skin tones ## Install ```sh npm install node-emoji ``` ### 2.0 Release šŸš€ This is the new 2.0 release of node-emoji, supporting ESM, new emoji and a new API. If you want to use the old version, please check out the [legacy branch](https://github.com/omnidan/node-emoji/tree/legacy). ## Usage ```js import * as emoji from 'node-emoji' emoji.emojify('I :heart: :coffee:!') // 'I ā¤ļø ā˜•ļø!' emoji.find('heart') // { emoji: 'ā¤', name: 'heart' } emoji.find('ā¤ļø') // { emoji: 'ā¤', name: 'heart' } emoji.get('unicorn') // šŸ¦„ emoji.get(':unicorn:') // šŸ¦„ emoji.has(':pizza:') // true emoji.has('šŸ•') // true emoji.has('unknown') // false emoji.random() // { name: 'house', emoji: 'šŸ ' } emoji.replace('I ā¤ļø coffee!', 'love', { preserveSpaces: true }) // 'I love coffee!' emoji.search(':uni:') // [ { emoji: 'šŸ¦„', name: 'unicorn' }, ... ] emoji.strip('I ā¤ļø coffee!') // 'I coffee!' emoji.unemojify('šŸ• for šŸ’ƒ') // ':pizza: for :dancer:' emoji.which('šŸ¦„') // 'unicorn' ``` ## API ### emoji.emojify(input, options?) Parse all markdown-encoded emojis in a string. Parameters: 1. **`input`** (`string`): The input string containing the markdown-encoding emojis. 1. **`options`** _(optional)_: - **`fallback`** (`string`; default: `""`): The string to fallback to if an emoji was not found. - **`format`** (`() => (emoji: string, part: string, string: string) => string`; default: `value => value`): Add a middleware layer to modify each matched emoji after parsing. ```js import * as emoji from 'node-emoji' console.log(emoji.emojify('The :unicorn: is a fictitious animal.')) // 'The šŸ¦„ is a fictitious animal.' ``` ### emoji.find(emoji) Get the name and character of an emoji. Parameters: 1. **`emoji`** (`string`): The emoji to get the data of. ```js import * as emoji from 'node-emoji' console.log(emoji.find('šŸ¦„')) // { name: 'unicorn', emoji: 'šŸ¦„' } ``` ### emoji.get(name) Get an emoji from an emoji name. Parameters: 1. **`name`** (`string`): The name of the emoji to get. ```js import * as emoji from 'node-emoji' console.log(emoji.get('unicorn')) // 'šŸ¦„' ``` ### emoji.has(emoji) Check if this library supports a specific emoji. Parameters: 1. **`emoji`** (`string`): The emoji to check. ```js import * as emoji from 'node-emoji' console.log(emoji.has('šŸ¦„')) // true ``` ### emoji.random() Get a random emoji. ```js import * as emoji from 'node-emoji' console.log(emoji.random()) // { name: 'unicorn', emoji: 'šŸ¦„' } ``` ### emoji.replace(input, replacement) Replace the emojis in a string. Parameters: - **`input`** (`string`): The input string. - **`replacement`** (`string | (emoji: string, index: number, string: string) => string`): The character to replace the emoji with. Can be either a string or a callback that returns a string. ```js import * as emoji from 'node-emoji' console.log(emoji.replace('The šŸ¦„ is a fictitious animal.', 'unicorn')) // 'The unicorn is a fictitious animal.' ``` ### emoji.search(keyword) Search for emojis containing the provided name in their name. Parameters: 1. **`keyword`** (`string`): The keyword to search for. ```js import * as emoji from 'node-emoji' console.log(emoji.search('honey')) // [ { name: 'honeybee', emoji: 'šŸ' }, { name: 'honey_pot', emoji: 'šŸÆ' } ] ``` ### emoji.strip(input, options?) Remove all of the emojis from a string. Parameters: 1. **`input`** (`string`): The input string to strip the emojis from. 1. **`options`** _(optional)_: - **`preserveSpaces`** (`boolean`): Whether to keep the extra space after a stripped emoji. ```js import * as emoji from 'node-emoji' console.log(emoji.strip('šŸ¦„ The unicorn is a fictitious animal.')) // 'The unicorn is a fictitious animal.' console.log( emoji.strip('šŸ¦„ The unicorn is a fictitious animal.', { preserveSpaces: true, }), ) // ' The unicorn is a fictitious animal.' ``` ### emoji.unemojify(input) Convert all emojis in a string to their markdown-encoded counterparts. Parameters: 1. **`input`** (`string`): The input string containing the emojis. ```js import * as emoji from 'node-emoji' console.log(emoji.unemojify('The šŸ¦„ is a fictitious animal.')) // 'The :unicorn: is a fictitious animal.' ``` ### emoji.which(emoji, options?) Get an emoji name from an emoji. Parameters: 1. **`emoji`** (`string`): The emoji to get the name of. 1. **`options`** _(optional)_: - **`markdown`** (`boolean`; default: `false`): Whether to return a `":emoji:"` string instead of `"emoji"` ```js import * as emoji from 'node-emoji' console.log(emoji.which('šŸ¦„')) // 'unicorn' ``` ## Development See _[`.github/Development.md`](./github/Development.md)_. ## License [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fomnidan%2Fnode-emoji.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fomnidan%2Fnode-emoji?ref=badge_large) ### Special Thanks ...to Anand Chowdhary (@AnandChowdhary) and his company [Pabio](https://github.com/pabio) for sponsoring this project via [GitHub Sponsors](https://github.com/sponsors/omnidan)! ## Contributors
./c²
./c²

šŸ’»
Adam Skoufis
Adam Skoufis

šŸ’»
Adrian Carolli
Adrian Carolli

šŸ’»
Alex Litel
Alex Litel

šŸ’»
Alex Rudenko
Alex Rudenko

šŸ’»
Antoine Hanriat
Antoine Hanriat

šŸ’»
Daniel Bugl
Daniel Bugl

šŸ› šŸ’» šŸ” šŸ¤” šŸš‡ šŸ”§ 🚧
Daniel Hilton
Daniel Hilton

šŸ’»
Elizabeth
Elizabeth

šŸ’» 🚧
Gabriel Csapo
Gabriel Csapo

šŸ’»
Greenkeeper
Greenkeeper

šŸ’»
Josh Goldberg ✨
Josh Goldberg ✨

šŸ”§ šŸ’» šŸš‡ 🚧
Kevin Cooper
Kevin Cooper

šŸ’»
Kristoffer K.
Kristoffer K.

šŸ’»
Ludo Renzetti
Ludo Renzetti

šŸ’»
Nicolas Charpentier
Nicolas Charpentier

🚧
Nicolas Gryman
Nicolas Gryman

šŸ’»
Paul Barber
Paul Barber

šŸ’»
Richie Bendall
Richie Bendall

šŸ’» 🚧
Ritik Banger
Ritik Banger

šŸ’»
Roopak Venkatakrishnan
Roopak Venkatakrishnan

šŸ’»
Shivkanth Bagavathy
Shivkanth Bagavathy

šŸ’»
Siddharth Batra
Siddharth Batra

šŸ’»
Stephan Meijer
Stephan Meijer

šŸ’»
Thomas Beverley
Thomas Beverley

šŸ›
Tim Ruffles
Tim Ruffles

šŸ’»
Todd Mazierski
Todd Mazierski

šŸ›
fossabot
fossabot

šŸ’»
goodjun
goodjun

šŸ›
jackie luo
jackie luo

šŸ’»
tgbtyty
tgbtyty

šŸ’»
wtgtybhertgeghgtwtg
wtgtybhertgeghgtwtg

šŸ’»