# eslint-plugin-no-emoji

[![npm version](https://img.shields.io/npm/v/eslint-plugin-no-emoji.svg)](https://www.npmjs.com/package/eslint-plugin-no-emoji)
[![CI](https://github.com/ravidorr/eslint-plugin-no-emoji/actions/workflows/ci.yml/badge.svg)](https://github.com/ravidorr/eslint-plugin-no-emoji/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

ESLint rule to disallow emoji characters in code.

## Requirements

- Node.js >= 18.18.0
- ESLint >= 8.0.0

> **Note**: This package is ESM-only (v2.0.0+). If you need CommonJS support, use v1.x.

## Installation

```bash
npm install eslint-plugin-no-emoji --save-dev
```

## Usage

### ESLint 9.x (Flat Config) - Recommended

In your `eslint.config.js`:

```js
import noEmoji from "eslint-plugin-no-emoji";

export default [
  // Use the recommended flat config
  noEmoji.configs["flat/recommended"],

  // Or configure manually
  {
    plugins: {
      "no-emoji": noEmoji
    },
    rules: {
      "no-emoji/no-emoji": "error"
    }
  }
];
```

You can also use `noEmoji.configs.flat` as an alias.

### ESLint 8.x (Legacy Config)

> **Note**: ESLint 8.x is deprecated. Consider upgrading to ESLint 9.x.

In your `.eslintrc.js` or `.eslintrc.json`:

```json
{
  "plugins": ["no-emoji"],
  "rules": {
    "no-emoji/no-emoji": "error"
  }
}
```

Or use the recommended config:

```json
{
  "extends": ["plugin:no-emoji/recommended"]
}
```

## Rules

### no-emoji

Disallows emoji characters in string literals and template literals.

#### Rule Details

This rule detects emoji characters in:
- String literals (single and double quotes)
- Template literals (backticks)

Examples of **incorrect** code:

```js
const message = "Hello! [grinning face]";
const greeting = 'Welcome [waving hand]';
const template = `Status: [check mark]`;
```

Examples of **correct** code:

```js
const message = "Hello!";
const greeting = 'Welcome';
const template = `Status: OK`;
```

#### Why?

- Nothing says "This code was generated by vibe coding" more than an emoji in your code
- Emojis can cause issues in certain environments or terminals
- They may not render consistently across platforms
- They can make code harder to search and maintain
- Some coding standards require ASCII-only strings

## Configuration Options

This rule has no configuration options. It will report an error for any emoji character found in string literals or template literals.

## Supported Emoji Types

The rule detects all Unicode emoji characters including:
- Face emojis (smileys, emotions)
- Hand gestures
- Hearts and symbols
- Animals and nature
- Food and drink
- Flags (country flags)
- Emoji with skin tone modifiers
- ZWJ (Zero Width Joiner) sequences
- Keycap emojis

## License

MIT
