node-emojis
v1.0.0
Published
Modern, tree-shakeable emoji library for Node.js with TypeScript, search, skin tones, and aliases π
Maintainers
Readme
node-emojis π
A modern, tree-shakeable emoji library for Node.js and browsers with TypeScript support.
β¨ Features
- π³ Tree-shakeable - Import only what you need
- π¦ 360+ emojis from Unicode 1.0 to 15.0
- π Smart search with keyword matching
- π¨ Skin tone support for 150+ human emojis
- π Emoji aliases (thumbsup/+1/thumbs_up)
- π TypeScript support with full type definitions
- π Zero dependencies
- β‘ Optimized for performance
π Requirements
- Node.js 20.0.0 or higher
- TypeScript 5.0+ (for TypeScript users)
π¦ Installation
npm install node-emojisπ Quick Start
// Import everything (backward compatible)
const emojis = require('node-emojis')
console.log(emojis.fire) // π₯
// Import only what you need (recommended)
const { search } = require('node-emojis/search')
const { applySkinTone } = require('node-emojis/skin-tones')ES Modules
import emojis from 'node-emojis'
import { search } from 'node-emojis/search'
import { applySkinTone } from 'node-emojis/skin-tones'π API
Basic Usage
const emojis = require('node-emojis')
// Access emojis directly
emojis.fire // π₯
emojis.pizza // π
emojis.unicorn // π¦
emojis['+1'] // π (alias support)π Search
const { search, getByCategory } = require('node-emojis/search')
// Search by keyword
const results = search('happy')
// Returns: [{ name: 'smile', emoji: 'π', keywords: [...], score: 0.8 }, ...]
// Get all emojis in a category
const animals = getByCategory('animals')
// Returns: [{ name: 'dog', emoji: 'π', ... }, ...]π¨ Skin Tones
const { applySkinTone, supportsSkinTone, getAllSkinToneVariations } = require('node-emojis/skin-tones')
// Apply skin tone
applySkinTone('π', 'medium') // ππ½
applySkinTone('π', '3') // ππ½ (Fitzpatrick scale)
// Check if emoji supports skin tones
supportsSkinTone('wave') // true
supportsSkinTone('fire') // false
// Get all variations
getAllSkinToneVariations('π')
// { light: 'ππ»', 'medium-light': 'ππΌ', medium: 'ππ½', ... }π Aliases
const { getAliases, getPrimaryName, isSameEmoji } = require('node-emojis/aliases')
// Get aliases
getAliases('fire') // ['flame', 'hot', 'lit', 'snapstreak']
// Get primary name
getPrimaryName('+1') // 'thumbs_up'
// Check if two names refer to the same emoji
isSameEmoji('thumbsup', '+1') // trueπ― Filters
const { filterByCategory, filterByVersion, filterByKeyword } = require('node-emojis/filters')
// Filter by category
const foods = filterByCategory('food')
// Filter by Unicode version
const modernEmojis = filterByVersion('10.0', 'min') // Unicode 10.0+
const oldEmojis = filterByVersion('1.0', 'exact') // Only Unicode 1.0
// Filter by keyword
const hearts = filterByKeyword('heart')π§ Utilities
const { getNameFromEmoji, isValidEmoji, isValidEmojiName } = require('node-emojis')
// Reverse lookup
getNameFromEmoji('π₯') // 'fire'
// Validation
isValidEmoji('π₯') // true
isValidEmojiName('fire') // trueπ² Tree Shaking
Import only what you need to minimize bundle size:
// β Imports entire library
import emojis from 'node-emojis'
// β
Imports only search functionality
import { search } from 'node-emojis/search'
// β
Import multiple features
import { search } from 'node-emojis/search'
import { applySkinTone } from 'node-emojis/skin-tones'
import { getAliases } from 'node-emojis/aliases'π Bundle Size Comparison
| Import Style | Size (minified) | |-------------|-----------------| | Full library | ~85KB | | Search only | ~15KB | | Skin tones only | ~8KB | | Aliases only | ~6KB | | Direct data import | ~60KB |
π Documentation
For comprehensive documentation, examples, and guides:
- Complete Documentation - All guides and references
- Getting Started - Installation and basic usage
- API Reference - Complete API documentation
- FAQ - Frequently asked questions
- Migration Guide - Upgrading from v0.x
- GitHub Wiki - Online documentation
π― Examples
See the examples directory for more usage examples:
- Basic usage - CommonJS examples
- Modern usage - Tree-shaking examples
π€ Contributing
Contributions are welcome! Please see our Contributing Guide for details.
We use Conventional Commits for commit messages.
π License
MIT Β© Jesse Palmer
π Acknowledgments
Emoji data sourced from Unicode.org and Emojipedia.
