eslint-plugin-reselect
Version:
eslint rules to enforce best practices in selectors made with reselect
104 lines (79 loc) • 3.31 kB
Markdown
eslint-plugin-reselect [](https://travis-ci.org/popul/eslint-plugin-reselect) [](https://david-dm.org/popul/eslint-plugin-reselect) [](https://david-dm.org/popul/eslint-plugin-reselect#info=devDependencies)
========================
Enforce best practices in selectors written with [Reselect](https://github.com/reactjs/reselect)
```sh
$ npm i eslint-plugin-reselect
```
Add `plugins` section and specify eslint-plugin-reselect as a plugin.
Add rules below in rules section.
```json
{
"plugins": [
"reselect"
],
"rules": {
"reselect/first-param-name": "error",
"reselect/maximum-arity": "error",
"reselect/second-param-destructured": "error",
"reselect/call": "error",
"reselect/prefer-create-selector": "warn"
}
}
```
* reselect/first-param-name: First param must be named `state`. Name can be configured. Here is an example with `fullState`:
```js
"rules": {
...
"reselect/first-param-name": ["error", "fullState"],
...
```
* reselect/maximum-arity: Maximum arity of 2. Arity can be modified like this :
```js
"rules": {
...
"reselect/maximum-arity": ["error", 3],
...
```
* reselect/second-param-destructured: Second argument must be a destructuring object.
* reselect/call: When calling a selector function, second argument must be an object declaration. Selector call is identified like this:
* Called function begins with `get`, unless otherwise configured in eslint settings
* Function called with 2 parameters
* First parameter must be `state`, unless otherwise configured in eslint settings
* reselect/prefer-create-selector: Instead of use selector in selector, prefer use of createSelector function.
All rules except `reselect/call` are triggered when :
* `reselect` is imported
* function name begins with `get`, or is otherwise configured in eslint settings
* function at root level (exported or not)
* functions in createSelector calls (not the latest)
If you don't use [Reselect](https://github.com/reactjs/reselect) in your selector file, you can just import [Reselect](https://github.com/reactjs/reselect) like this to enable rules
```js
import 'reselect';
```
This plugin also exports an `all` configuration that includes every available rule.
```js
{
"plugins": [
"reselect"
],
"extends": ["plugin:reselect/all"]
}
```
This plugin exports a `recommended` configuration that enforce React good practices.
To enable this configuration use the `extends` property in your `.eslintrc` config file:
```js
{
"extends": ["plugin:reselect/recommended"]
}
```
See [ESLint documentation](http://eslint.org/docs/user-guide/configuring#extending-configuration-files) for more information about extending configuration files.
The rules enabled in this configuration are:
* reselect/first-param-name
* reselect/maximum-arity
* reselect/prefer-create-selector
eslint-plugin-reselect is licensed under the [MIT License](http://www.opensource.org/licenses/mit-license.php).