Настройка правил
Правила — это основной строительный блок ESLint. Правило проверяет, соответствует ли ваш код определённым требованиям, и указывает, что делать, если он им не соответствует. Правила также могут содержать дополнительные параметры конфигурации, относящиеся к этому правилу.
ESLint поставляется с большим количеством встроенных правил, и вы можете добавлять новые правила с помощью плагинов. Изменить набор правил, используемых в проекте, можно с помощью комментариев конфигурации или файлов конфигурации.
Уровни важности правил
Чтобы изменить уровень важности правила, присвойте идентификатору правила одно из следующих значений:
-
"off"или0— отключить правило. -
"warn"или1— включить правило как предупреждение (не влияет на код завершения). -
"error"или2— включить правило как ошибку (при срабатывании код завершения равен 1).
Обычно для правил задают значение "error", чтобы обеспечить соответствие правилу при тестировании в системе непрерывной интеграции, проверках перед фиксацией изменений и слиянии запросов на включение изменений, поскольку в этом случае ESLint завершает работу с ненулевым кодом завершения.
Если вы не хотите требовать соответствия правилу, но всё же хотите, чтобы ESLint сообщал о нарушениях этого правила, задайте уровень важности "warn". Обычно это используется при введении нового правила, которому в будущем будет задано значение "error", если правило помечает что-то, кроме потенциальной ошибки при сборке или во время выполнения (например, неиспользуемую переменную), или если правило не может с уверенностью определить, что проблема найдена (когда у правила возможны ложные срабатывания и требуется проверка вручную).
Использование комментариев конфигурации
Чтобы настроить правила в файле с помощью комментариев конфигурации, используйте комментарий следующего формата:
/* eslint eqeqeq: "off", curly: "error" */
В этом примере правило eqeqeq отключено, а правило curly включено как ошибка. Для уровня важности правила также можно использовать числовое значение:
/* eslint eqeqeq: 0, curly: 2 */
Этот пример аналогичен предыдущему, но вместо строковых значений в нём используются числовые коды. Правило eqeqeq отключено, а для правила curly задан уровень ошибки.
Если у правила есть дополнительные параметры, их можно указать с помощью синтаксиса литерала массива, например:
/* eslint quotes: ["error", "double"], curly: 2 */
В этом комментарии для правила quotes задан параметр "double". Первый элемент массива всегда задаёт уровень важности правила (числом или строкой).
Описания в комментариях конфигурации
В комментарии конфигурации можно добавить описание, поясняющее, зачем он нужен. Описание должно идти после конфигурации и отделяться от неё двумя или более символами - подряд. Например:
/* eslint eqeqeq: "off", curly: "error" -- Here's a description about why this configuration is necessary. */
/* eslint eqeqeq: "off", curly: "error"
--------
Here's a description about why this configuration is necessary. */
/* eslint eqeqeq: "off", curly: "error"
* --------
* This will not work due to the line above starting with a '*' character.
*/
Сообщение о неиспользуемых встроенных комментариях конфигурации eslint
Чтобы сообщать о неиспользуемых встроенных комментариях конфигурации eslint (то есть не меняющих уже заданную конфигурацию), используйте настройку reportUnusedInlineConfigs. Например:
// eslint.config.js
import { defineConfig } from "eslint/config";
export default defineConfig([
{
linterOptions: {
reportUnusedInlineConfigs: "error",
},
},
]);
По умолчанию для этой настройки задано значение "off".
Эта настройка аналогична параметру CLI --report-unused-inline-configs.
Использование файлов конфигурации
Чтобы настроить правила в файле конфигурации, используйте ключ rules вместе с уровнем ошибки и любыми нужными параметрами. Например:
// eslint.config.js
import { defineConfig } from "eslint/config";
export default defineConfig([
{
rules: {
eqeqeq: "off",
"no-unused-vars": "error",
"prefer-const": ["error", { ignoreReadBeforeAssign: true }],
},
},
]);
Если одно и то же правило указано в нескольких объектах конфигурации, конфигурации правила объединяются, причём более поздний объект имеет приоритет над предыдущими. Например:
import { defineConfig } from "eslint/config";
export default defineConfig([
{
rules: {
semi: ["error", "never"],
},
},
{
rules: {
semi: ["warn", "always"],
},
},
]);
В этой конфигурации итоговая конфигурация правила semi — ["warn", "always"], поскольку оно указано последним в массиве. Массив показывает, что конфигурация задаёт уровень важности и любые параметры. Изменить только уровень важности можно, указав строку или число, как в этом примере:
import { defineConfig } from "eslint/config";
export default defineConfig([
{
rules: {
semi: ["error", "never"],
},
},
{
rules: {
semi: "warn",
},
},
]);
Здесь второй объект конфигурации переопределяет только уровень важности, поэтому итоговая конфигурация для semi — ["warn", "never"].
Правила из плагинов
Чтобы настроить правило, определённое в плагине, добавьте перед идентификатором правила пространство имён плагина и /.
Например, в файле конфигурации:
// eslint.config.js
import example from "eslint-plugin-example";
import { defineConfig } from "eslint/config";
export default defineConfig([
{
plugins: {
example,
},
rules: {
"example/rule1": "warn",
},
},
]);
В этом файле конфигурации правило example/rule1 взято из плагина с именем eslint-plugin-example.
Этот формат также можно использовать в комментариях конфигурации, например:
/* eslint "example/rule1": "error" */
Отключение правил
Использование комментариев конфигурации
- Соблюдайте осторожность. Отключайте правила ESLint в коде лишь в ограниченном числе случаев и только при наличии веской и обоснованной причины. Отключение правил в коде не должно быть стандартным способом устранения ошибок линтинга.
-
Указывайте причину. После раздела
--комментария добавьте пояснение, почему отключается конкретное правило. В пояснении следует уточнить, почему правило отключено и почему это необходимо в данной ситуации. - Временные решения. Если комментарий отключения добавлен как временная мера для устранения срочной проблемы, создайте задачу для последующего надлежащего решения основной проблемы. Так вы сможете вернуться к комментарию отключения и устранить его на более позднем этапе.
- Проверка кода и парное программирование. Поощряйте регулярную взаимную проверку кода членами команды. Проверка кода помогает выяснить причины добавления комментариев отключения и убедиться, что они используются уместно.
- Конфигурации. По возможности предпочитайте файлы конфигурации ESLint комментариям отключения. Файлы конфигурации обеспечивают единообразную настройку правил для всего проекта.
Чтобы отключить предупреждения правил для части файла, используйте блочные комментарии следующего формата:
/* eslint-disable */
alert("foo");
/* eslint-enable */
Также можно отключать или включать предупреждения для определённых правил:
/* eslint-disable no-alert, no-console */
alert("foo");
console.log("bar");
/* eslint-enable no-alert, no-console */
Чтобы отключить предупреждения правил во всём файле, поместите блочный комментарий /* eslint-disable */ в начало файла:
/* eslint-disable */
alert("foo");
Также можно отключить или включить отдельные правила для всего файла:
/* eslint-disable no-alert */
alert("foo");
Чтобы правило никогда не применялось (независимо от последующих директив включения и отключения):
/* eslint no-alert: "off" */
alert("foo");
Чтобы отключить все правила для конкретной строки, используйте строчный или блочный комментарий одного из следующих форматов:
alert("foo"); // eslint-disable-line
// eslint-disable-next-line
alert("foo");
/* eslint-disable-next-line */
alert("foo");
alert("foo"); /* eslint-disable-line */
Чтобы отключить конкретное правило для определённой строки:
alert("foo"); // eslint-disable-line no-alert
// eslint-disable-next-line no-alert
alert("foo");
alert("foo"); /* eslint-disable-line no-alert */
/* eslint-disable-next-line no-alert */
alert("foo");
Чтобы отключить несколько правил для определённой строки:
alert("foo"); // eslint-disable-line no-alert, quotes, semi
// eslint-disable-next-line no-alert, quotes, semi
alert("foo");
alert("foo"); /* eslint-disable-line no-alert, quotes, semi */
/* eslint-disable-next-line no-alert, quotes, semi */
alert("foo");
/* eslint-disable-next-line
no-alert,
quotes,
semi
*/
alert("foo");
Все описанные выше способы подходят и для правил плагинов. Например, чтобы отключить правило rule-name плагина eslint-plugin-example, объедините имя плагина (example) и имя правила (rule-name) в example/rule-name:
foo(); // eslint-disable-line example/rule-name
foo(); /* eslint-disable-line example/rule-name */
Описания комментариев
В комментариях конфигурации можно добавлять описания, поясняющие, зачем необходимо отключить или повторно включить правило. Описание должно идти после конфигурации и отделяться от неё двумя или более символами - подряд. Например:
// eslint-disable-next-line no-console -- Here's a description about why this configuration is necessary.
console.log("hello");
/* eslint-disable-next-line no-console --
* Here's a very long description about why this configuration is necessary
* along with some additional information
**/
console.log("hello");
Использование файлов конфигурации
Чтобы отключить правила для группы файлов в файле конфигурации, используйте следующий объект конфигурации с ключом files. Например:
// eslint.config.js
import { defineConfig } from "eslint/config";
export default defineConfig([
{
rules: {
"no-unused-expressions": "error",
},
},
{
files: ["*-test.js", "*.spec.js"],
rules: {
"no-unused-expressions": "off",
},
},
]);
Отключение встроенных комментариев
Чтобы отключить все встроенные комментарии конфигурации, используйте настройку noInlineConfig в файле конфигурации. Например:
// eslint.config.js
import { defineConfig } from "eslint/config";
export default defineConfig([
{
linterOptions: {
noInlineConfig: true,
},
rules: {
"no-unused-expressions": "error",
},
},
]);
Чтобы отключить комментарии правил и другие встроенные настройки, можно также использовать параметр CLI --no-inline-config.
Сообщение о неиспользуемых комментариях eslint-disable
Чтобы сообщать о неиспользуемых комментариях eslint-disable (отключающих правила, которые не сообщили бы о нарушениях в отключённой строке), используйте настройку reportUnusedDisableDirectives. Например:
// eslint.config.js
import { defineConfig } from "eslint/config";
export default defineConfig([
{
linterOptions: {
reportUnusedDisableDirectives: "error",
},
},
]);
По умолчанию для этой настройки задано значение "warn".
Эта настройка аналогична параметрам CLI --report-unused-disable-directives и --report-unused-disable-directives-severity.
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/use/configure/rules