eslint-plugin-n weekly downloads statistics
By eslint-community (4 listings) · npm · ESLint plugins
Additional ESLint's rules for Node.js
eslint-plugin-n has 3,183,279 recorded weekly downloads on npm, a decrease of 59.6% over the past 30 days.
It ranks #142 of 2,256 tracked npm listings by weekly downloads.
Over 90 days, weekly downloads changed by -58.8%.
PluginStats has 121 daily observations since Jun 19, 2026; the latest is from Oct 17, 2026.
About eslint-plugin-n
eslint-plugin-n
forked from eslint-plugin-node v11.1.0. as the original repository seems no longer maintained.
Additional ESLint rules for Node.js
🎨 Playground
online-playground
💿 Install & Usage
Migrating from eslint-plugin-node? See the migration guide.
| Version | Supported Node.js | Supported ESLint Version | Status |
| 18.x | ^20.19.0 \|\| ^22.13.0 \|\| >=24.0.0 | >=8.57.1 | 🏃♂️actively maintained | | 17.x | ^18.18.0 \|\| ^20.9.0 \|\| >=21.1.0 | >=8.23.0 | 🏃♂️actively maintained | | 16.x | >=16.0.0 | >=7.0.0 | ⚠️EOL | | 15.x | >=12.22.0 | >=7.0.0 | ⚠️EOL |
Note: It recommends a use of the "engines" field of package.json. The "engines" field is used by n/no-unsupported-features/* rules.
eslint.config.js
To setup without the recommended configs, you'll need to add the plugin:
package.json (An example)
Configured Node.js version range
The rules get the supported Node.js version range from the following, falling back to the next if unspecified:
1. Rule configuration version 2. ESLint shared setting node.version 3. package.json [engines] field 4. package.json devEngines.runtime field (when name is "node") 5. >=16.0.0
If you omit both the [engines] field and the devEngines.runtime field (with name set to "node"), this rule chooses >=16.0.0 as the configured Node.js version since 16 is the maintained lts (see also Node.js Release Working Group).
For Node.js packages, using the [engines] field is recommended because it's the official way to indicate support:
For Shareable Configs or packages with a different development environment (e.g. pre-compiled, web package, etc.), you can configure ESLint with settings.node.version to specify support.
📖 Rules
💼 Configurations enabled in.\ 🟢 Set in the recommended-module configuration.\ ✅ Set in the recommended-script configuration.\ 🔧 Automatically fixable by the --fix CLI option.\ ❌ Deprecated.
| Name | Description | 💼 | 🔧 | ❌ |
| callback-return | require return statements after callbacks | | | | | exports-style | enforce either module.exports or exports | | 🔧 | | | file-extension-in-import | enforce the style of file extensions in import declarations | | 🔧 | | | global-require | require require() calls to be placed at top-level module scope | | | | | handle-callback-err | require error handling in callbacks | | | | | hashbang | require correct usage of hashbang | 🟢 ✅ | 🔧 | | | no-callback-literal | enforce Node.js-style error-first callback pattern is followed | | | | | no-deprecated-api | disallow deprecated APIs | 🟢 ✅ | | | | no-exports-assign | disallow the assignment to exports | 🟢 ✅ | | | | no-extraneous-import | disallow import declarations which import extraneous modules | 🟢 ✅ | | | | no-extraneous-require | disallow require() expressions which import extraneous modules | 🟢 ✅ | | | | no-hide-core-modules | disallow third-party modules which are hiding core modules | | | ❌ | | no-missing-import | disallow import declarations which import missing modules | 🟢 ✅ | | | | no-missing-require | disallow require() expressions which import missing modules | 🟢 ✅ | | | | no-mixed-requires | disallow require calls to be mixed with regular variable declarations | | | | | no-new-require | disallow new operators with calls to require | | | | | no-path-concat | disallow string concatenation with dirname, filename, and import.meta paths | | | | | no-process-env | disallow the use of process.env | | | | | no-process-exit | disallow the use of process.exit() | 🟢 ✅ | | | | no-restricted-import | disallow specified modules when loaded by import declarations | | | | | no-restricted-require | disallow specified modules when loaded by require | | | | | no-sync | disallow synchronous methods | | | | | no-top-level-await | disallow top-level await in published modules | | | | | no-unpublished-bin | disallow bin files that npm ignores | | | | | no-unpublished-import | disallow import declarations which import private modules | 🟢 ✅ | | | | no-unpublished-require | disallow require() expressions which import private modules | 🟢 ✅ | | | | no-unsupported-features/es-builtins | disallow unsupported ECMAScript built-ins on the specified version | 🟢 ✅ | | | | no-unsupported-features/es-syntax | disallow unsupported ECMAScript syntax on the specified version | 🟢 ✅ | | | | no-unsupported-features/node-builtins | disallow unsupported Node.js built-in APIs on the specified version | 🟢 ✅ | | | | prefer-global/buffer | enforce either Buffer or require("buffer").Buffer | | | | | prefer-global/console | enforce either console or require("console") | | | | | prefer-global/crypto | enforce either crypto or require("crypto").webcrypto | | | | | prefer-global/process | enforce either process or require("process") | | | | | prefer-global/text-decoder | enforce either TextDecoder or require("util").TextDecoder | | | | | prefer-global/text-encoder | enforce either TextEncoder or require("util").TextEncoder | | | | | prefer-global/timers | enforce either global timer functions or require("timers") | | | | | prefer-global/url | enforce either URL or require("url").URL | | | | | prefer-global/url-search-params | enforce either URLSearchParams or require("url").URLSearchParams | | | | | prefer-import/assert-strict | enforce using node:assert/strict instead of node:assert. | | | | | prefer-node-protocol | enforce using the node: protocol when importing Node.js builtin modules. | | 🔧 | | | prefer-process-get-builtin-module | enforce using process.getBuiltinModule() to load Node.js built-in modules | | | | | prefer-promises/dns | enforce require("dns").promises | | | | | prefer-promises/fs | enforce require("fs").promises | | | | | process-exit-as-throw | require that process.exit() expressions use the same code path as throw | 🟢 ✅ | | | | shebang | require correct usage of hashbang | | 🔧 | ❌ |
🔧 Configs
| | Name | | :- | :------------------- | | 🟢 | recommended-module | | ✅ | recommended-script |
About each config:…
Description from the npm listing.
- eslint
- eslintplugin
- eslint-plugin
- node
- nodejs
- ecmascript
- shebang
- file
- path
- import
- require
Charts
Images: 30d · 1y · all time · 1600×900 dark
Adoption over time
7/30/90-day growth
Listing placement
Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.
Each band is one page of 20. Weekly downloads on a log scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.
Recent observations
Full history (121)Similar npm ESLint plugins plugins
All 20 eslint-plugin-n alternativesData source
Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.
Listing: https://www.npmjs.com/package/eslint-plugin-n. First seen Oct 16, 2026; last successful collection Oct 19, 2026. See the methodology.