node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »

eslint-plugin-lodash3

ESLint-plugin-lodash3

Maintenance Status NPM version Build Status Coverage Status

Lodash3 specific linting rules for ESLint

Installation

Install ESLint either locally or globally.

npm install eslint

If you installed ESLint globally, you have to install lodash3 plugin globally too. Otherwise, install it locally.

$ npm install eslint-plugin-lodash3

Configuration

Add plugins section and specify ESLint-plugin-lodash3 as a plugin.

{
  "plugins": ["lodash3"]
}

Finally, enable all of the rules that you would like to use.

{
  "rules": {
    "lodash3/prop-shorthand": 2,
    "lodash3/matches-shorthand": [2, "always", 3],
    "lodash3/matches-prop-shorthand": [2, "always"],
    "lodash3/prefer-chain": [2, 3],
    "lodash3/preferred-alias": 2,
    "lodash3/no-single-chain": 2,
    "lodash3/prefer-reject": [2, 3],
    "lodash3/prefer-filter": [2, 3],
    "lodash3/no-unnecessary-bind": 2,
    "lodash3/unwrap": 2,
    "lodash3/prefer-compact": 2,
    "lodash3/no-double-unwrap": 2,
    "lodash3/prefer-map": 2,
    "lodash3/prefer-wrapper-method": 2,
    "lodash3/prefer-invoke": 2,
    "lodash3/prefer-thru": 2,
    "lodash3/prefer-lodash-chain": 2,
    "lodash3/prefer-lodash-method": 2,
    "lodash3/prefer-lodash-typecheck": 2,
    "lodash3/no-commit": 2,
    "lodash3/prefer-get": [2, 3],
    "lodash3/collection-return": 2,
    "lodash3/prefer-matches": [2, 3],
    "lodash3/prefer-times": 2,
    "lodash3/prefer-startswith": 2,
    "lodash3/prefer-noop": 2,
    "lodash3/prefer-constant": 2,
    "lodash3/chain-style": [2, "as-needed"]
  }
}

List of supported rules

  • prop-shorthand: Prefer property shorthand syntax
  • matches-prop-shorthand: Prefer matches property shorthand syntax
  • matches-shorthand: Prefer matches shorthand syntax
  • preferred-alias: Preferred aliases
  • prefer-chain: Prefer chain over nested lodash calls
  • no-single-chain: Prevent chaining syntax for single method, e.g. _(x).map().value()
  • prefer-reject: Prefer _.reject over filter with !(expression) or x.prop1 !== value
  • prefer-filter: Prefer _.filter over _.forEach with an if statement inside.
  • no-unnecessary-bind: Prefer passing thisArg over binding.
  • unwrap: Prevent chaining without evaluation via value() or non-chainable methods like max().,
  • prefer-compact: Prefer _.compact over _.filter for only truthy values.
  • no-double-unwrap: Do not use .value() on chains that have already ended (e.g. with max() or reduce())
  • prefer-map: Prefer _.map over _.forEach with a push inside.
  • prefer-wrapper-method: Prefer using array and string methods in the chain and not the initial value, e.g. _(str).split(' ')...
  • prefer-invoke: Prefer using _.invoke over _.map with a method call inside.
  • prefer-thru: Prefer using _.prototype.thru in the chain and not call functions in the initial value, e.g. _(x).thru(f).map(g)...
  • prefer-lodash-chain: Prefer using Lodash chains (e.g. _.map) over native and mixed chains.
  • prefer-lodash-method: Prefer using Lodash collection methods (e.g. _.map) over native array methods.
  • prefer-lodash-typecheck: Prefer using _.is* methods over typeof and instanceof checks when applicable.
  • no-commit: Do not use .commit() on chains that should end with .value()
  • prefer-get: Prefer using _.get or _.has over expression chains like a && a.b && a.b.c.
  • collection-return: Always return a value in iteratees of lodash collection methods that aren't forEach.
  • prefer-matches: Prefer _.matches over conditions like a.foo === 1 && a.bar === 2 && a.baz === 3.
  • prefer-times: Prefer _.times over _.map without using the iteratee's arguments.
  • prefer-startswth: Prefer _.startsWith over a.indexOf(b) === 0.
  • prefer-noop: Prefer _.noop over empty functions.
  • prefer-constant: Prefer _.constant over functions returning literals.
  • chain-style: Enforce a specific chain style: explicit, implicit, or explicit only when necessary.

License

ESLint-plugin-lodash3 is licensed under the MIT License.