Package detail

eslint-plugin-clsx

temoncher14.9kMIT0.0.10

An ESLint plugin for clsx/classnames

eslint, eslintplugin, eslint-plugin, clsx

readme

eslint-plugin-clsx

An ESLint plugin for clsx/classnames

Installation

You'll first need to install ESLint:

npm i eslint --save-dev

Next, install eslint-plugin-clsx:

npm install eslint-plugin-clsx --save-dev

Usage

Here's an example ESLint configuration that:

  • Enables the recommended configuration
  • Enables an optional/non-recommended rule
{
    "extends": ["plugin:clsx/recommended"],
    "rules": {
        "clsx/no-redundant-clsx": "error"
    }
}

Rules

⚠️ Configurations set to warn in.\ ✅ Set in the recommended configuration.\ 🔧 Automatically fixable by the --fix CLI option.

Name Description ⚠️ 🔧
forbid-array-expressions forbid usage of array expressions inside clsx 🔧
forbid-false-inside-object-expressions forbid usage of false literal inside object expressions of clsx 🔧
forbid-true-inside-object-expressions forbid usage of true literal inside object expressions of clsx 🔧
no-redundant-clsx disallow redundant clsx usage 🔧
no-spreading forbid usage of object expression inside clsx 🔧
prefer-logical-over-objects forbid usage of object expression inside clsx 🔧
prefer-merged-neighboring-elements enforce merging of neighboring elements 🔧
prefer-objects-over-logical forbid usage of logical expressions inside clsx 🔧

Presets

Name Description
recommended enables all recommended rules in this plugin
all enables all rules in this plugin

Preset usage

Presets are enabled by adding a line to the extends list in your config file. For example, to enable the recommended preset, use:

{
    "extends": ["plugin:clsx/recommended"]
}

Settings

This rule can optionally be configured with an object that represents imports that should be considered an clsx usage

{
    "settings": {
        "clsxOptions": {
            "myclsx": "default"
        }
    }
}

Examples of incorrect code for the { myclsx: 'default' } setting (with no-redundant-clsx rule enabled):

import mc from 'myclsx';

const singleClasses = mc('single-class');

Examples of incorrect code for the { myclsx: 'cn' } setting (with no-redundant-clsx rule enabled):

import { cn } from 'myclsx';

const singleClasses = cn('single-class');

Examples of incorrect code for the { myclsx: ['default', 'cn'] } setting (with no-redundant-clsx rule enabled):

import mc, { cn } from 'myclsx';

// both report errors
const singleClasses = cn('single-class');
const singleClasses = mc('single-class');

Default setting value is { clsx: ['default', 'clsx'], classnames: 'default' }

changelog

eslint-plugin-clsx

0.0.10

Patch Changes

  • 56fbdbd: fix peer dependency warning

0.0.9

Patch Changes

  • 2241036: fix no-redundant-clsx autofixing object literal wrapped with clsx

0.0.8

Patch Changes

  • 50b38fc: add redundancy selector for no-redundant-clsx

0.0.7

Patch Changes

  • 8594323: cleanup published files

0.0.6

Patch Changes

  • 75d5227: fix #16 critical build issue

0.0.5

Patch Changes

  • 93d93a8: fix #6 prefer-objects-over-logical autofix

0.0.4

Patch Changes

  • 5eb6a1e: no-redundant-clsx improvement

0.0.3

Patch Changes

  • 2204a6c: fix forbid-true-inside-object-expressions conversion bug

0.0.2

Patch Changes

  • d3b4c51: switched the project to typescript