JSPM

eslint-plugin-lodash-es

1.2.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 36
  • Score
    100M100P100Q77125F
  • License MIT

ESLint plugin that enforces destructured imports from lodash-es and auto-fixes them

Package Exports

  • eslint-plugin-lodash-es

Readme

eslint-plugin-lodash-es

npm npm GitHub
Coverage Quality Gate Status
Reliability Rating Maintainability Rating Security Rating

ESLint plugin that enforces destructured imports from lodash-es with auto-fixing and provides configurable function usage policies.

Key Benefits:

  • 🔧 Auto-fixes imports for better tree-shaking
  • 📦 Reduces bundle size significantly
  • 🛡️ Configurable function usage policies
  • 💡 Intelligent suggestions for native alternatives
  • 📝 Full TypeScript support

Installation

npm install -D eslint-plugin-lodash-es

Usage

Flat config

// eslint.config.js (ESLint 9+)
import eslintPluginLodashEs from 'eslint-plugin-lodash-es'

export default [
  ...eslintPluginLodashEs.configs.recommended
]

Define config

import { defineConfig } from 'eslint/config'

// Base
import globals from 'globals'
import eslint from '@eslint/js'
import tseslint from 'typescript-eslint'
// Plugins
import eslintPluginStylistic from '@stylistic/eslint-plugin'
import eslintPluginLodashEs from 'eslint-plugin-lodash-es'

export default defineConfig(
  {
    ignores: ['dist/', 'node_modules/', 'coverage/'],
  },
  {
    languageOptions: {
      globals: {
        ...globals.browser, // or globals.node
      },
    },
  },
  //Base
  eslint.configs.recommended,
  tseslint.configs.strict,
  tseslint.configs.stylistic,
  // Plugins
  eslintPluginStylistic.configs.recommended,
  eslintPluginLodashEs.configs.recommended
)

Manual Configuration

// eslint.config.js (ESLint 9+)
export default [
  {
    plugins: { 'lodash-es': eslintPluginLodashEs },
    rules: {
      'lodash-es/enforce-destructuring': 'error',
      'lodash-es/no-chaining': 'error',
      'lodash-es/no-method-imports': 'error',
      'lodash-es/enforce-functions': ['error', { exclude: ['forEach'] }],
      'lodash-es/suggest-native-alternatives': 'warn',
    }
  }
]

Legacy Config (ESLint 8)

// .eslintrc.js
module.exports = {
  extends: ['plugin:lodash-es/recommended-legacy']
}

What it does

1. Enforces Destructured Imports

Transforms this:

import _ from 'lodash-es'
const result = _.first([1, 2, 3])

Into this (automatically):

import { first } from 'lodash-es'
const result = first([1, 2, 3])

2. Transforms to Native JavaScript

Transforms this:

import { map, first, groupBy } from 'lodash-es'

const doubled = map([1, 2, 3], x => x * 2)
const firstItem = first(items)
const grouped = groupBy(users, 'department')

Into this (automatically):

import { map, first, groupBy } from 'lodash-es'

const doubled = [1, 2, 3].map(x => x * 2)
const firstItem = items.at(0)
const grouped = Object.groupBy(users, user => user.department)

Supports 104+ lodash functions with automatic transformation to modern JavaScript equivalents, including ES2022+ features like Array.at() and Object.groupBy().

Recently Added Native Alternatives (37 new functions)

Array slice operations: drop, dropRight, take, takeRight Math & arithmetic: add, subtract, multiply, divide, sum, mean Number utilities: clamp, inRange, random String transformations: capitalize, lowerFirst, upperFirst (using modern .at()) Type checking: isDate, isRegExp, isError, isSet, isWeakMap, isWeakSet, isSymbol, isSafeInteger Type conversion: castArray, toArray, toFinite, toInteger, toSafeInteger Comparisons: eq, gt, gte, lt, lte Function utilities: bind, delay, defer Object creation: create Utility stubs: identity, noop, stubArray, stubFalse, stubObject, stubString, stubTrue

Rules

Rule Description 💡 🔧
enforce-destructuring Enforce destructured imports from lodash-es 🔧
no-chaining Prevent chaining that kills tree-shaking 💡 🔧
no-method-imports Prevent deprecated per-method imports 💡 🔧
enforce-functions Transform lodash functions to native JavaScript 💡 🔧
suggest-native-alternatives Suggest native JavaScript alternatives 💡 🔧

Legend: 💡 Suggestions • 🔧 Auto-fixable • ✅ Recommended

Why Use This?

Bundle Size: Reduces bundle from ~70KB (full lodash-es) to ~1KB per function

Better Tree Shaking: Modern bundlers eliminate unused code more effectively

Team Standards: Enforce consistent lodash usage across your codebase

Documentation

See detailed rule documentation for configuration options and examples.

Contributing

Contributions welcome! See CONTRIBUTING.md for details.