as of version 1.1 of eslint-plugin-deprecate-classnames , multiple rules are supported out of the box. this fork adds no further features and has not updated the dependencies, unlike the source. please install the source version instead.
- Install
eslint-plugin-deprecate-classnames
version 1.1.0 or newer - Rename all instances of
deprecate-classnames-many
todeprecate-classnames
in your eslint config - Update your rules like the example below
- "deprecate-classnames-many/classnames": [
+ "deprecate-classnames/classnames": [
"error",
- {
- "disAllow": [
{"nameRegExp": "^test-foo-", "use": "new-foo-"}
{"nameRegExp": "^test-bar-", "use": "new-bar-"}
- ]
- }
]
=>
"deprecate-classnames/classnames": [
"error",
{"nameRegExp": "^test-foo-", "use": "new-foo-"}
{"nameRegExp": "^test-bar-", "use": "new-bar-"}
]
This plugin helps you refactor your codebase by identifying and replacing deprecated css class names.
First, you'll need to install ESLint:
npm install eslint --save-dev
Next, install eslint-plugin-deprecate-classnames-many:
npm install eslint-plugin-deprecate-classnames-many --save-dev
Add deprecate-classnames to the plugins section of your .eslintrc configuration file. You can omit the eslint-plugin- prefix:
{
"plugins": [
"deprecate-classnames-many"
]
}
import eslintPluginDeprecateClassnames from "eslint-plugin-deprecate-classname-many";
export default [
{
plugins: {
"deprecate-classnames-many": eslintPluginDeprecateClassnames,
},
}
]
Then configure the rules you want to use under the rules section.
This rule identifies the use of deprecated class names in your JSX/TSX files and suggests alternatives.
Given the following JSX code:
<div className="test-classname test-classname-2" />
{
"rules": {
"deprecate-classnames-many/classnames": ["error",{
"disAllow": [
{"name": "test-classname", "use": "new-classname"}
]
}]
}
}
{
"rules": {
"deprecate-classnames-many/classnames": ["error", {
"disAllow": [
{"names": ["test-classname", "test-classname-2"], "use": "new-classname"}
]
}]
}
}
{
"rules": {
"deprecate-classnames-many/classnames": ["error", {
"disAllow": [
{"nameRegExp": "^test-", "use": "new-classname"}
]
}]
}
}
{
"rules": {
"deprecate-classnames-many/classnames": ["error", {
"disAllow": [
{"nameRegExp": "^test-foo-", "use": "new-foo-"}
{"nameRegExp": "^test-bar-", "use": "new-bar-"}
]
}]
}
}
note: this is not supported yet for the classes
rule
This rule identifies the use of deprecated class names within the classes prop used in Material-UI components and suggests alternatives.
Given the following JSX code:
<div classes={{ root: "test-classname test-classname-2" }} />
{
"rules": {
"deprecate-classnames-many/classes": ["error",
{"name": "test-classname", "use": "new-classname"}
]
}
}
{
"rules": {
"deprecate-classnames-many/classes": ["error",
{"names": ["test-classname", "test-classname-2"], "use": "new-classname"}
]
}
}
{
"rules": {
"deprecate-classnames-many/classes": ["error",
{"nameRegExp": "^test-", "use": "new-classname"}
]
}
}
eslint-plugin-deprecate-classnames-many is a powerful tool for maintaining a clean and up-to-date code base by ensuring deprecated class names are systematically identified and replaced. This is especially useful for large teams and during major refactoring efforts. By integrating this plugin, you can automate the enforcement of class name conventions and improve code quality.
For more information, visit the npm package page.
This fork is an extension of eslint-plugin-deprecate-classnames. Which at the time of making this, did not include support for multiple rules.