Плагин ESLint-plugin-n представляет собой набор правил для статического анализа кода, ориентированных на среду Node.js. Его основная задача — контроль корректного использования Node.js API, предотвращение устаревших паттернов и выявление ошибок, связанных с особенностями серверного JavaScript.
eslint-plugin-n применяется для анализа серверного JavaScript-кода, где критичны такие аспекты, как:
Плагин исторически вырос как продолжение и развитие решений, связанных с eslint-plugin-node, и фактически заменяет его в современных конфигурациях ESLint.
eslint-plugin-n организован как набор независимых правил, сгруппированных по функциональным областям. Каждое правило представляет собой модуль, анализирующий AST (Abstract Syntax Tree) и применяющий проверки к конкретным узлам кода.
Основные категории:
Каждое правило имеет строгую конфигурацию, уровень severity (off, warn, error) и дополнительные опции, позволяющие адаптировать поведение под конкретный runtime.
Установка осуществляется через npm или аналогичные менеджеры пакетов:
npm install eslint-plugin-n --save-dev
Подключение в конфигурации ESLint:
{
"plugins": ["n"],
"extends": ["plugin:n/recommended"]
}
import n from "eslint-plugin-n";
export default [
n.configs.recommended
];
Flat config позволяет более гибко комбинировать правила и снижает зависимость от строковых конфигураций.
Одно из ключевых направлений — проверка API в зависимости от указанной версии Node.js.
Правило n/no-unsupported-features/node-builtins
анализирует использование встроенных модулей и сопоставляет их с целевой
версией runtime.
Типичный сценарий:
fs/promises в старых версиях
Node.js;crypto без
полифилов;Правила, связанные с модулями:
n/no-missing-import — проверка существования
импортируемых модулей;n/no-extraneous-import — выявление импортов,
отсутствующих в dependencies;n/no-unpublished-import — контроль использования
внутренних файлов пакета.Эти правила помогают поддерживать чистую структуру зависимостей и предотвращают ошибки сборки.
eslint-plugin-n активно контролирует корректность смешивания систем модулей:
require в
ESM-контексте;import/export в CommonJS-проектах;Правило n/no-unsupported-features/es-syntax особенно
важно при миграции между системами модулей.
Одна из наиболее значимых функций — декларативное указание целевой версии Node.js через конфигурацию:
{
"settings": {
"node": {
"version": ">=18.0.0"
}
}
}
На основе этого параметра плагин строит граф допустимых API и синтаксических возможностей.
Проверки включают:
Node.js предоставляет специфические глобальные объекты
(process, Buffer, __dirname,
__filename). eslint-plugin-n регулирует их
использование:
n/no-deprecated-api — запрет устаревших глобальных
методов;n/prefer-global/process — контроль явного использования
process;n/prefer-global/buffer — унификация работы с
Buffer.Эти правила повышают предсказуемость поведения кода и облегчают миграции между окружениями.
Плагин содержит проверки, связанные с асинхронным кодом:
Особое внимание уделяется Node-style callbacks
(err, data) и их правильной обработке.
Flat config требует явного импорта плагина и его конфигурации:
import n from "eslint-plugin-n";
export default [
{
files: ["**/*.js"],
plugins: { n },
rules: {
...n.configs.recommended.rules
}
}
];
В этой модели каждая часть конфигурации становится декларативной, а плагин интегрируется как объект, а не строковый идентификатор.
Хотя eslint-plugin-n не ориентирован напрямую на TypeScript, он часто используется совместно с:
Основные конфликты возникают в области:
Для корректной работы важно синхронизировать настройки резолвера с TypeScript compiler options.
eslint-plugin-n оптимизирован для минимального влияния на время линтинга:
Основная нагрузка возникает при глубоких деревьях импортов и большом количестве файлов в monorepo.
Распространённые проблемы при использовании:
В реальных проектах плагин используется для:
Он особенно полезен в проектах с длительным жизненным циклом, где критична обратная совместимость с LTS-версиями Node.js.