ESLint plugin that disallows individual ECMAScript syntactic features from ES3 to upcoming proposals. Version 9.6.0 requires ESLint >=9.29.0 and Node.js ^20.19.0 || >=22.12.0. Actively maintained by eslint-community as a fork of the deprecated eslint-plugin-es. Provides 128+ granular rules to restrict specific syntax (e.g., BigInt, optional chaining, top-level await) with readable error messages. Ships TypeScript type declarations, flat config support, and predefined configs like 'no-new-in-es2023'. Unlike setting ecmaVersion in Espree, this plugin allows selective feature bans and gives clear feedback for restricted syntax.
npm install eslint-plugin-es-xVerified import paths — ran on the pinned version, not inferred.
Sets up eslint-plugin-es-x with flat config in an ESM project, forbidding BigInt and optional chaining.
Upgrade ESLint to >=9.29.0 and Node.js to ^20.19.0 || >=22.12.0.
Review updated configs and adjust rule overrides.
Migrate to flat config format.
Use rule names like 'es-x/no-arrow-functions'.
Access configs via plugin.configs object.
Run: npm install eslint-plugin-es-x --save-dev
Change to import statement: import plugin from 'eslint-plugin-es-x'
Add to plugins object: import plugin from 'eslint-plugin-es-x'; export default [{ plugins: { 'es-x': plugin } }]Ensure rule name is 'es-x/no-bigint' (not 'no-bigint') and plugin is registered.