node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



Maintenance Status NPM version Build Status Coverage Status

Lodash3 specific linting rules for ESLint


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


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 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 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. over native and mixed chains.
  • prefer-lodash-method: Prefer using Lodash collection methods (e.g. over native array methods.
  • prefer-lodash-typecheck: Prefer using* 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 === 1 && === 2 && a.baz === 3.
  • prefer-times: Prefer _.times over 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.


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