Skip to content

mathieumagalhaes/eslint-plugin-search-and-replace

Repository files navigation

@mathieumagalhaes/eslint-plugin-search-and-replace

CDN Package size   NPM Downloads per week   License

An ESLint plugin that allows you to perform text replacements in your JavaScript/TypeScript code through ESLint rules. This plugin supports global replacements, variable name replacements, and import path modifications.

Installation | Usage | Examples

⚙️ Installation

pnpm add -D @mathieumagalhaes/eslint-plugin-search-and-replace
yarn add --dev @mathieumagalhaes/eslint-plugin-search-and-replace
npm install --save-dev @mathieumagalhaes/eslint-plugin-search-and-replace

🔧 Usage

import searchAndReplace from "@mathieumagalhaes/eslint-plugin-search-and-replace";

export default [
    {
        plugins: {
            'search-and-replace': searchAndReplace
        }
    }
];

Rule Configuration

The replace rule accepts the following options:

Option Type Default Description
search string - The text or pattern to search for
replace string - The text to replace matches with
caseSensitive boolean true Whether the search should be case sensitive
scope string "global" The scope of replacement. Can be "global", "variable", or "import-path"

Then configure the rules you want to use under the rules section:

{
    "rules": {
        "search-and-replace/replace": ["error", {
            "search": "foo",
            "replace": "bar"
        }]
    }
}

🔧 Examples

Global Text Replacement

{
    "rules": {
        "search-and-replace/replace": ["error", {
            "search": "oldText",
            "replace": "newText"
        }]
    }
}

Case-Insensitive Replacement

{
    "rules": {
        "search-and-replace/replace": ["error", {
            "search": "oldtext",
            "replace": "newText",
            "caseSensitive": false
        }]
    }
}

Variable Name Replacement

{
    "rules": {
        "search-and-replace/replace": ["error", {
            "search": "oldVar",
            "replace": "newVar",
            "scope": "variable"
        }]
    }
}

Import Path Replacement

{
    "rules": {
        "search-and-replace/replace": ["error", {
            "search": "@old-package",
            "replace": "@new-package",
            "scope": "import-path"
        }]
    }
}

Multiple Replacement Rules

You can also configure multiple replacement rules by passing an array:

{
    "rules": {
        "search-and-replace/replace": ["error", [
            {
                "search": "oldText",
                "replace": "newText"
            },
            {
                "search": "anotherOld",
                "replace": "anotherNew",
                "scope": "variable"
            }
        ]]
    }
}

🤝 Contribute

Continuous improvement is encouraged and your contributions are valuable!

If you identify areas for improvement, have suggestions or encounter issues, please create a GitHub issue.

Running locally

  • Install dependencies.
  • Run pnpm/yarn/npm run dev
  • You can edit src/rules/** typescript files.
  • Linting this codebase can be done with pnpm/yarn/npm run lint
  • Testing the codebase (after changes and build succesfully) can be done with pnpm/yarn/npm run test

Any added feature should have at least one valid and at least one invalid test case.

📜 LICENSE

This is licensed under the MIT License, see LICENSE

About

An eslint plugin to search and replace text with a another text

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published