diff --git a/README.md b/README.md index 77fdc9b..eaaaf18 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,27 @@ [![Npm](https://img.shields.io/npm/v/eslint-plugin-deprecation.svg)](https://www.npmjs.com/package/eslint-plugin-deprecation) [![Npm Downloads](https://img.shields.io/npm/dt/eslint-plugin-deprecation.svg)](https://www.npmjs.com/package/eslint-plugin-deprecation) ![Size](https://badgen.net/bundlephobia/minzip/eslint-plugin-deprecation) -[![Licence](https://img.shields.io/npm/l/eslint-plugin-deprecation.svg?maxAge=2592000)](https://github.com/gund/eslint-plugin-deprecation/blob/master/LICENSE) +[![License](https://img.shields.io/npm/l/eslint-plugin-deprecation.svg?maxAge=2592000)](https://github.com/gund/eslint-plugin-deprecation/blob/master/LICENSE) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) -> ESLint rule that reports usage of deprecated code +> An [ESLint](https://eslint.org/) rule that reports usage of deprecated code. ## Prerequisites -This plugin only works with `@typescript-eslint/parser`. +If you already use [TypeScript](https://www.typescriptlang.org/) and one or more rules from the [`typescript-eslint`](https://typescript-eslint.io/) plugin, then `eslint-plugin-deprecation` will work out of the box without any additional dependencies or special configuration specified in this section. (This is because `@typescript-eslint/plugin` automatically contains `@typescript-eslint/parser` and your ESLint should already be configured with the `parserOptions` to work properly with TypeScript.) -Which means that you should install dev deps: +Otherwise, in order for you to use this plugin, you must also install the following dependencies: -- `@typescript-eslint/parser` - `typescript` +- `@typescript-eslint/parser` + +For example, if you use the `npm` package manager, then you would run the following command in the root of your project: + +```sh +npm install --save-dev typescript @typescript-eslint/parser +``` -Then configure ESLint to parse TypeScript and include type information: +Next, you must configure ESLint to parse TypeScript and include type information: ```jsonc { @@ -28,35 +34,51 @@ Then configure ESLint to parse TypeScript and include type information: "parserOptions": { "ecmaVersion": 2020, "sourceType": "module", - "project": "./tsconfig.json" // <-- Point to your project's tsconfig.json or create new one + "project": "./tsconfig.json" // <-- Point to your project's "tsconfig.json" or create a new one. } } ``` ## Install -Install the plugin +For example, if you use the `npm` package manager, then you would run the following command in the root of your project: -``` -npm i -D eslint-plugin-deprecation +```sh +npm install --save-dev eslint-plugin-deprecation ``` ## Setup -Now add deprecation plugin and rule to your `.eslintrc`: +### Using the `recommended` Config + +The easiest way to use this plugin is to extend from the `recommended` config, like this: ```jsonc { - "plugins": ["deprecation", ...], - "rules": { - "deprecation/deprecation": "warn", // or "error" to have stricter rule - ... - } + "extends": [ + "plugin:deprecation/recommended", + ], } ``` -Now eslint will report all deprecated code that you use! +The `recommended` config will enable the plugin and enable the rule with a value of `error`. + +### Manually Enable the Plugin and Rule + +If you don't want to use the `recommended` config for some reason, you can accomplish the same thing by specifying the following config: + +```jsonc +{ + "plugins": [ + "deprecation", + ], + + "rules": { + "deprecation/deprecation": "error", + }, +} +``` ---- +## Credits -_NOTE:_ This rule was ported from https://github.com/SonarSource/SonarJS repository. +This rule was originally ported from [SonarJS repository](https://github.com/SonarSource/SonarJS). diff --git a/src/configs/index.ts b/src/configs/index.ts new file mode 100644 index 0000000..74a034b --- /dev/null +++ b/src/configs/index.ts @@ -0,0 +1,3 @@ +import recommended from './recommended'; + +export { recommended }; diff --git a/src/configs/recommended.ts b/src/configs/recommended.ts new file mode 100644 index 0000000..c41b8b7 --- /dev/null +++ b/src/configs/recommended.ts @@ -0,0 +1,8 @@ +const recommended = { + plugins: ['deprecation'], + rules: { + 'deprecation/deprecation': 'error', + }, +}; + +export default recommended; diff --git a/src/index.ts b/src/index.ts index 65d6a16..6c706d3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,4 @@ import * as rules from './rules'; +import * as configs from './configs'; -export { rules }; +export { configs, rules };