Spec-Zone.ru › ESLint

Настройка правил

Подсказка

На этой странице объясняется, как настроить правила с помощью формата flat config. Для устаревшего формата eslintrc, см. устаревшую документацию.

Правила — это основной строительный блок 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 */

Этот комментарий указывает параметр «double» для правила quotes. Первый элемент массива всегда является уровнем серьёзности правила (число или строка).

Описание комментариев конфигурации

Комментарии конфигурации могут содержать описания, чтобы объяснить, почему комментарий необходим. Описание должно следовать за конфигурацией и отделяться от неё двумя или более последовательными - символами. Например:

/* 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.
 */

Использование файлов конфигурации

Чтобы настроить правила внутри файла конфигурации, используйте ключ rules вместе с уровнем ошибки и любыми параметрами, которые вы хотите использовать. Например:

export default [
    {
        rules: {
            eqeqeq: "off",
            "no-unused-vars": "error",
            "prefer-const": ["error", { "ignoreReadBeforeAssign": true }]
        }
    }
];

Когда несколько объектов конфигурации указывают на одно и то же правило, конфигурация правила объединяется с последним объектом, при этом последний объект имеет приоритет над предыдущими объектами. Например:

export default [
    {
        rules: {
            semi: ["error", "never"]
        }
    },
    {
        rules: {
            semi: ["warn", "always"]
        }
    }
];

Используя эту конфигурацию, окончательная конфигурация правила для semi составляет ["warn", "always"], поскольку она указана последней в массиве. Массив указывает, что конфигурация предназначена для уровня серьёзности и любых параметров. Вы можете изменить только уровень серьёзности, определив только строку или число, как в этом примере:

export default [
    {
        rules: {
            semi: ["error", "never"]
        }
    },
    {
        rules: {
            semi: "warn"
        }
    }
];

Здесь второй объект конфигурации переопределяет только уровень серьёзности, поэтому окончательная конфигурация для semi составляет ["warn", "never"].

Важно

Правила, настроенные с помощью комментариев конфигурации, имеют наивысший приоритет и применяются после всех настроек файлов конфигурации.

Правила из плагинов

Чтобы настроить правило, определённое в плагине, добавьте префикс к идентификатору правила с именем пространства имён плагина и /.

В файле конфигурации, например:

// eslint.config.js
import example from "eslint-plugin-example";

export default [
    {
        plugins: {
            example
        },
        rules: {
            "example/rule1": "warn"
        }
    }
];

В этом файле конфигурации правило example/rule1 происходит из плагина с именем eslint-plugin-example.

Вы также можете использовать этот формат с комментариями конфигурации, например:

/* eslint "example/rule1": "error" */
Важно

Для использования правил плагинов в комментариях конфигурации ваш файл конфигурации должен загрузить плагин и указать его в объекте plugins вашей конфигурации. Комментарии конфигурации не могут загружать плагины самостоятельно.

Отключение правил

Использование комментариев конфигурации

  • Используйте с осторожностью. Отключение правил 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-enable */ без перечисления определённых правил приводит к повторному включению всех отключённых правил.

Чтобы отключить предупреждения правил в целом в файле, поместите блок-комментарий /* 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');

Все вышеперечисленные методы также работают для правил плагинов. Например, чтобы отключить правило eslint-plugin-example плагина rule-name, объедините имя плагина (example) и имя правила (rule-name) в example/rule-name:

foo(); // eslint-disable-line example/rule-name
foo(); /* eslint-disable-line example/rule-name */
Подсказка

Комментарии, отключающие предупреждения для части файла, сообщают ESLint, что не следует сообщать о нарушениях правил для отключённого кода. Тем не менее, ESLint всё ещё анализирует весь файл, поэтому отключённый код всё ещё должен быть синтаксически корректным JavaScript.

Описание комментариев

Комментарии конфигурации могут содержать описания, чтобы объяснить, почему необходимо отключение или повторное включение правила. Описание должно следовать за конфигурацией и отделяться от неё двумя или более последовательными - символами. Например:

// 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
export default [
    {
        rules: {
            "no-unused-expressions": "error"
        }
    },
    {
        files: ["*-test.js","*.spec.js"],
        rules: {
            "no-unused-expressions": "off"
        }
    }
];

Отключение встроенных комментариев

Чтобы отключить все встроенные комментарии конфигурации, используйте настройку noInlineConfig в вашем файле конфигурации. Например:

// eslint.config.js
export default [
    {
        linterOptions: {
            noInlineConfig: true
        },
        rules: {
            "no-unused-expressions": "error"
        }
    }
];

Вы также можете использовать параметр командной строки --no-inline-config для отключения комментариев правил, помимо других встроенных настроек.

Отчёт о неиспользуемых комментариях eslint-disable

Чтобы отслеживать неиспользуемые комментарии eslint-disable используйте настройку reportUnusedDisableDirectives. Например:

// eslint.config.js
export default [
    {
        linterOptions: {
            reportUnusedDisableDirectives: "error"
        }
    }
];

Эта настройка по умолчанию равна "warn".

Эта настройка аналогична параметрам командной строки --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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API