Метод lintFiles в классе ESLint
предназначен для анализа файловых наборов, заданных через пути,
glob-шаблоны или массивы путей. Он выполняет полноценный процесс
линтинга на основе конфигурации ESLint, включая загрузку правил,
плагинов и парсеров, а также применение игнорирования
(.eslintignore или ignores в flat config).
eslint.lintFiles(patterns)
patterns — string | string[] Представляет
путь к файлу, директории или glob-выражение.При вызове lintFiles происходит:
Метод работает асинхронно и возвращает Promise.
Promise<LintResult[]>
Каждый элемент массива представляет результат анализа одного файла:
type LintResult = {
filePath: string;
messages: LintMessage[];
errorCount: number;
warningCount: number;
fixableErrorCount: number;
fixableWarningCount: number;
source?: string;
output?: string;
};
type LintMessage = {
ruleId: string | null;
severity: 1 | 2;
message: string;
line: number;
column: number;
endLine?: number;
endColumn?: number;
fix?: {
range: [number, number];
text: string;
};
};
import { ESLint } from "eslint";
const eslint = new ESLint();
const results = await eslint.lintFiles(["src/**/*.js"]);
results.forEach(result => {
console.log(result.filePath);
console.log(result.errorCount, result.warningCount);
});
fix: true ESLint возвращает
изменённый код в поле output.const eslint = new ESLint({ fix: true });
const results = await eslint.lintFiles(["src"]);
lintTextМетод lintText используется для анализа строкового
содержимого без привязки к файловой системе. Он применяется в случаях,
когда код существует в памяти: редакторы, виртуальные файлы,
CI-пайплайны, динамически сгенерированный код.
eslint.lintText(code, options)
code — string Анализируемый
JavaScript/TypeScript код.
options — object | string
Основные поля options:
{
filePath?: string;
warnIgnored?: boolean;
overrideConfig?: object;
overrideConfigFile?: string;
fix?: boolean;
}
filePath Позволяет эмулировать файл. Используется
для применения правил, зависящих от расширения или пути.
overrideConfig Позволяет передать конфигурацию
ESLint напрямую, без .eslintrc или
eslint.config.js.
fix Включает автоисправление кода.
warnIgnored Определяет поведение при попадании под
игнорируемые правила.
Promise<LintResult[]>
Несмотря на обработку одного текста, результат всегда возвращается массивом, где обычно содержится один элемент.
import { ESLint } from "eslint";
const eslint = new ESLint();
const code = `
const a = 1
console.log(a)
`;
const results = await eslint.lintText(code, {
filePath: "example.js"
});
console.log(results[0].messages);
overrideConfigconst results = await eslint.lintText("var a = 1", {
overrideConfig: {
rules: {
semi: ["error", "always"]
}
}
});
Конфигурация применяется только к данному вызову и не влияет на глобальные настройки ESLint-инстанса.
lintFiles
и lintTextlintFiles — файловая система, glob-паттерныlintText — строка в памятиlintFiles используется для анализа проектов и
каталоговlintText используется для единичных фрагментов
кодаlintFiles автоматически учитывает
.eslintignore, eslint.config.js,
.eslintrclintText требует явного указания filePath
или overrideConfig для полного контроляОба метода поддерживают fix, но:
lintFiles записывает изменения в output
для каждого файлаlintText возвращает исправленный код в
output без файловой записиНезависимо от метода, итоговая структура данных одинакова:
{
filePath: string,
messages: LintMessage[],
errorCount: number,
warningCount: number,
fixableErrorCount: number,
fixableWarningCount: number,
output?: string
}
errorCount — количество ошибок
(severity: 2)warningCount — количество предупреждений
(severity: 1)fixableErrorCount — ошибки, которые могут быть
автоматически исправленыfixableWarningCount — предупреждения с автофиксомconst eslint = new ESLint({ fix: true });
const results = await eslint.lintFiles(["src"]);
await ESLint.outputFixes(results);
Функция outputFixes записывает изменения обратно в
файловую систему.
Для lintText запись не выполняется:
const results = await eslint.lintText("var a = 1", { fix: true });
console.log(results[0].output);
При использовании lintText значение
filePath влияет на:
env)await eslint.lintText("const x: number = 1", {
filePath: "file.ts"
});
В данном случае включается TypeScript-конфигурация, если она предусмотрена.
await eslint.lintFiles(["src/**/*.js", "src/**/*.ts"]);
await eslint.lintText(userCode, {
filePath: "input.js"
});
const snippet = "function test() { return 1 }";
await eslint.lintText(snippet, {
overrideConfig: {
rules: {
curly: "error"
}
}
});
Оба метода учитывают:
eslint.config.js).eslintrc)Различие проявляется только в способе определения контекста файла: физический путь против виртуального.
После выполнения линтинга результаты часто проходят дополнительную обработку:
severityconst errorsOnly = results.map(r => ({
file: r.filePath,
errors: r.messages.filter(m => m.severity === 2)
}));
Если конфигурация ESLint некорректна:
lintFiles прерывает обработку соответствующего
файлаlintText возвращает ошибку как сообщение в
messages или выбрасывает исключение при критических
сбоях| Характеристика | lintFiles | lintText |
|---|---|---|
| Источник кода | Файлы | Строка |
| Поддержка glob | Да | Нет |
| Игнорирование | Автоматическое | Частичное |
| Автофикс запись | В файл | В память |
| Типичный сценарий | Проект | Фрагмент кода |