An ESLint plugin for clsx/classnames
You'll first need to install ESLint:
npm i eslint --save-devNext, install eslint-plugin-clsx:
npm install eslint-plugin-clsx --save-devHere's an example ESLint configuration that:
- Enables the
recommendedconfiguration - Enables an optional/non-recommended rule
{
"extends": ["plugin:clsx/recommended"],
"rules": {
"clsx/no-redundant-clsx": "error"
}
}
✅ 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 | 🔧 |
| Name | Description | |
|---|---|---|
| ✅ | recommended |
enables all recommended rules in this plugin |
all |
enables all rules in this plugin |
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"]
}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' }