eslint-plugin-ramda
Version:
ESLint rules for use with Ramda
113 lines (97 loc) • 4.92 kB
Markdown
# eslint-plugin-ramda
[](https://www.npmjs.org/package/eslint-plugin-ramda)
[](https://travis-ci.org/ramda/eslint-plugin-ramda)
[](https://codecov.io/gh/ramda/eslint-plugin-ramda)
[](https://www.npmjs.org/package/eslint-plugin-ramda)
ESLint rules for pragmatic Ramda usage, refactoring and simplification
## Installation
```
$ npm install --save-dev eslint eslint-plugin-ramda
```
## Usage
Configure it in `package.json`.
```json
{
"name": "my-awesome-project",
"eslintConfig": {
"env": {
"es6": true
},
"plugins": [
"ramda"
],
"rules": {
"ramda/always-simplification": "error",
"ramda/any-pass-simplification": "error",
"ramda/both-simplification": "error",
"ramda/complement-simplification": "error",
"ramda/compose-pipe-style": "error",
"ramda/compose-simplification": "error",
"ramda/cond-simplification": "error",
"ramda/either-simplification": "error",
"ramda/eq-by-simplification": "error",
"ramda/filter-simplification": "error",
"ramda/if-else-simplification": "error",
"ramda/map-simplification": "error",
"ramda/merge-simplification": "error",
"ramda/no-redundant-and": "error",
"ramda/no-redundant-not": "error",
"ramda/no-redundant-or": "error",
"ramda/pipe-simplification": "error",
"ramda/prefer-both-either": "error",
"ramda/prefer-complement": "error",
"ramda/prefer-ramda-boolean": "error",
"ramda/prop-satisfies-simplification": "error",
"ramda/reduce-simplification": "error",
"ramda/reject-simplification": "error",
"ramda/set-simplification": "error",
"ramda/unless-simplification": "error",
"ramda/when-simplification": "error"
}
}
}
```
## Rules
- `always-simplification` - Detects when `always` usage can be replaced by a Ramda function
- `any-pass-simplification` - Suggests simplifying list of negations in `anyPass` by single negation in `allPass`
- `both-simplification` - Suggests transforming negated `both` conditions on negated `either`
- `complement-simplification` - Forbids confusing `complement`, suggesting a better one
- `compose-pipe-style` - Enforces `compose` for single line expression and `pipe` for multiline
- `compose-simplification` - Detects when a function that has the same behavior already exists
- `cond-simplification` - Forbids using `cond` when `ifElse`, `either` or `both` fits
- `either-simplification` - Suggests transforming negated `either` conditions on negated `both`
- `eq-by-simplification` - Forbids `eqBy(prop(_))` and suggests `eqProps`
- `filter-simplification` - Forbids using negated `filter` and suggests `reject`
- `if-else-simplification` - Suggests `when` and `unless` when it is possible to replace
- `map-simplification` - Forbids `map(prop(_))` and suggests `pluck`
- `merge-simplification` - Forbids `merge` when `assoc` fits
- `no-redundant-and` - Forbids `and` with 2 parameters in favor of `&&`
- `no-redundant-not` - Forbids `not` with 1 parameter in favor of `!`
- `no-redundant-or` - Forbids `or` with 2 parameters in favor of `||`
- `pipe-simplification` - Detects when a function that has the same behavior already exists
- `prefer-both-either` - Enforces using `both`/`either` instead of `allPass`/`anyPass` with a list of only two predicates
- `prefer-complement` - Enforces using `complement` instead of compositions using `not`
- `prefer-ramda-boolean` - Enforces using `R.T` and `R.F` instead of explicit functions
- `prop-satisfies-simplification` - Detects when can replace `propSatisfies` by more simple functions
- `reduce-simplification` - Detects when can replace `reduce` by `sum` or `product`
- `reject-simplification` - Forbids using negated `reject` and suggests `filter`
- `set-simplification` - Forbids using `set` with `lensProp` in favor of `assoc`
- `unless-simplification` - Forbids using negated `unless` and suggests `when`
- `when-simplification` - Forbids using negated `when` and suggests `unless`
## Recommended configuration
This plugin exports a [`recommended` configuration](index.js) that enforces good practices.
To enable this configuration, use the `extends` property in your `package.json`.
```json
{
"name": "my-awesome-project",
"eslintConfig": {
"plugins": [
"ramda"
],
"extends": "plugin:ramda/recommended"
}
}
```
See [ESLint documentation](http://eslint.org/docs/user-guide/configuring#extending-configuration-files)
for more information about extending configuration files.
MIT © and