eslint-plugin-es
raw JSON → 4.1.0 verified Sat Apr 25 auth: no javascript
ESLint plugin that disallows specific ECMAScript syntactic features individually, providing readable error messages (e.g., 'ES2020 BigInt is forbidden') instead of Espree's generic 'unexpected token'. Current stable version 4.1.0 (released 2021-09-12). Released under semantic versioning: minor versions add rules for newly stage-4 proposals, major versions update configs for new ECMAScript snapshots. Key differentiator: granular control over every ES feature with per-rule disabling/enabling, plus presets like 'es/no-new-in-es2020' and 'es/restrict-to-es2020'. Requires eslint >= 4.19.1.
Common errors
error ESLint couldn't find the plugin "es". ↓
cause The plugin package name is 'eslint-plugin-es', but it provides 'es' as the plugin name. ESLint expects node_modules/eslint-plugin-es to exist.
fix
Run 'npm install eslint-plugin-es --save-dev'. Ensure it's in package.json devDependencies.
error Configuration for rule "es/no-for-of-loops" is invalid: Value "error" is not a valid severity. ↓
cause Misconfigured severity or inline comment syntax error; rule expects 'off' | 'warn' | 'error'.
fix
Use 'error' (string) or 2 (number) in config, e.g., 'es/no-for-of-loops': 'error'.
error Definition for rule 'es/no-json-superset' was not found. ↓
cause Older version (1.x) might not have the rule; or custom config refers to a rule that doesn't exist in current version.
fix
Check the rule list for your installed version. Run 'npm list eslint-plugin-es' and consult the documentation for available rules.
Warnings
breaking In v4.0.0, configs were renamed from 'plugin:es/no-<year>' (e.g., 'plugin:es/no-2018') to 'plugin:es/no-new-in-es<year>' and 'plugin:es/restrict-to-es<year>'. Old config names are removed. ↓
fix Update config references: 'plugin:es/no-2018' → 'plugin:es/no-new-in-es2018' or 'plugin:es/restrict-to-es2018'.
breaking In v2.0.0, dropped support for Node.js 6. ↓
fix Ensure Node.js version >= 8.10.0 (v4) or >= 6 (v1.x).
deprecated The 'no-json-superset' rule is superseded by more granular rules in later versions. ↓
fix Use individual rules from newer versions if finer control is needed; rule still works.
gotcha This plugin only disallows syntactic features; it does not check built-in objects or methods (e.g., Array.from). Use eslint-plugin-es-x for that. ↓
fix If you need to disallow ES built-in methods, consider using eslint-plugin-es-x (a fork with extended rules) or no-restricted-globals.
gotcha Some rules (like 'no-property-shorthands', 'no-trailing-function-commas') are fixable, but many are not. Autofix behavior may change in minor versions. ↓
fix Review rule documentation for fixability before relying on --fix.
Install
npm install eslint-plugin-es yarn add eslint-plugin-es pnpm add eslint-plugin-es Imports
- plugin wrong
import plugin from 'eslint-plugin-es'correctconst plugin = require('eslint-plugin-es') - rules wrong
const { rules } = require('eslint-plugin-es/rules')correctconst { rules } = require('eslint-plugin-es') - configs wrong
const configs = require('eslint-plugin-es/configs')correctconst { configs } = require('eslint-plugin-es')
Quickstart
// .eslintrc.js
module.exports = {
plugins: ['es'],
extends: ['eslint:recommended', 'plugin:es/no-new-in-es2020'],
rules: {
'es/no-for-of-loops': 'error',
},
};