Spec-Zone.ru › ESLint

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

Подсказка

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

Вы можете расширить ESLint с помощью плагинов различными способами. Плагины могут включать:

  • Пользовательские правила для проверки, соответствует ли ваш код определённым ожиданиям, и что делать, если он не соответствует.
  • Пользовательские конфигурации. Обратитесь к документации плагина для получения подробной информации о том, как использовать эти конфигурации.
  • Пользовательские обработчики для извлечения JavaScript-кода из других типов файлов или предварительной обработки кода перед проверкой.

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

ESLint поддерживает использование сторонних плагинов. Плагины представляют собой объекты, соответствующие определённому интерфейсу, распознаваемому ESLint.

Чтобы настроить плагины внутри файла конфигурации, используйте ключ plugins, который содержит объект со свойствами, представляющими пространства имён плагинов, и значениями, равными объекту плагина.

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

export default [
    {
        plugins: {
            example
        },
        rules: {
            "example/rule1": "warn"
        }
    }
];
Подсказка

При создании пространства имён для плагина используется соглашение об использовании имени пакета npm без префикса eslint-plugin-. В предыдущем примере eslint-plugin-example присваивается пространство имён example.

Настройка локального плагина

Плагины не обязательно нужно публиковать в npm для использования с ESLint. Вы также можете загрузить плагины напрямую из файла, как в этом примере:

// eslint.config.js
import local from "./my-local-plugin.js";

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

Здесь используется пространство имён local, но вы также можете использовать любое другое имя.

Настройка виртуального плагина

Определения плагинов могут быть созданы виртуально непосредственно в вашей конфигурации. Например, предположим, что у вас есть правило, содержащееся в файле с именем my-rule.js, которое вы хотите включить в своей конфигурации. Вы можете определить виртуальный плагин для этого, как в этом примере:

// eslint.config.js
import myRule from "./rules/my-rule.js";

export default [
    {
        plugins: {
            local: {
                rules: {
                    "my-rule": myRule
                }
            }
        },
        rules: {
            "local/my-rule": "warn"
        }
    }
];

Здесь используется пространство имён local для определения виртуального плагина. Правило myRule затем присваивает имя my-rule внутри объекта rules виртуального плагина. (См. Создание плагинов для полного формата плагина.) Затем вы можете обратиться к правилу как к local/my-rule, чтобы настроить его.

Использование правил плагина

Вы можете использовать определённые правила, включённые в плагин. Для этого укажите плагин в объекте конфигурации, используя ключ plugins. Значение для ключа plugin — это объект, где имя плагина является именем свойства, а значение — объектом плагина. Вот пример:

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

export default [
    {
        files: ["**/*.js"],
        plugins: {
            jsdoc: jsdoc
        },
        rules: {
            "jsdoc/require-description": "error",
            "jsdoc/check-values": "error"
        }
    }
];

В этой конфигурации плагин JSDoc определён с именем jsdoc. Префикс jsdoc/ в каждом имени правила указывает, что правило поступает от плагина с этим именем, а не от самого ESLint.

Поскольку имя плагина и объект плагина оба jsdoc, вы можете также сократить конфигурацию до этого:

import jsdoc from "eslint-plugin-jsdoc";

export default [
    {
        files: ["**/*.js"],
        plugins: {
            jsdoc
        },
        rules: {
            "jsdoc/require-description": "error",
            "jsdoc/check-values": "error"
        }
    }
];

Хотя это наиболее распространённое соглашение, вам не нужно использовать то же имя, что и плагин. Вы можете указать любой префикс, который вам нравится, например:

import jsdoc from "eslint-plugin-jsdoc";

export default [
    {
        files: ["**/*.js"],
        plugins: {
            jsd: jsdoc
        },
        rules: {
            "jsd/require-description": "error",
            "jsd/check-values": "error"
        }
    }
];

Этот объект конфигурации использует jsd в качестве префиксного плагина вместо jsdoc.

Указание обработчика

Плагины могут предоставлять обработчики. Обработчики могут извлекать JavaScript-код из других типов файлов, а затем позволить ESLint проверить JavaScript-код. В качестве альтернативы, обработчики могут преобразовывать JavaScript-код во время предварительной обработки.

Чтобы указать обработчики в файле конфигурации, используйте ключ processor и присвойте имя обработчика в формате namespace/processor-name. Например, следующее использует обработчик из @eslint/markdown для файлов *.md.

// eslint.config.js
import markdown from "@eslint/markdown";

export default [
    {
        files: ["**/*.md"],
        plugins: {
            markdown
        },
        processor: "markdown/markdown"
    }
];

Обработчики могут создавать именованные блоки кода, такие как 0.js и 1.js. ESLint обрабатывает такой именованный блок кода как дочерний файл исходного файла. Вы можете указать дополнительные конфигурации для именованных блоков кода с помощью дополнительных объектов конфигурации. Например, следующее отключает правило strict для именованных блоков кода, заканчивающихся на .js в файлах Markdown.

// eslint.config.js
import markdown from "@eslint/markdown";

export default [

    // applies to all JavaScript files
    {
        rules: {
            strict: "error"
        }
    },

    // applies to Markdown files
    {
        files: ["**/*.md"],
        plugins: {
            markdown
        },
        processor: "markdown/markdown"
    },

    // applies only to JavaScript blocks inside of Markdown files
    {
        files: ["**/*.md/*.js"],
        rules: {
            strict: "off"
        }
    }
];

ESLint проверяет только именованные блоки кода, когда они являются JavaScript-файлами или если они соответствуют записи files в объекте конфигурации. Убедитесь, что вы добавили объект конфигурации с соответствующей записью files если хотите проверить именованные блоки кода, не являющиеся JavaScript. Также обратите внимание, что глобальные игнорирования применяются и к именованным блокам кода.

// eslint.config.js
import markdown from "@eslint/markdown";

export default [

    // applies to Markdown files
    {
        files: ["**/*.md"],
        plugins: {
            markdown
        },
        processor: "markdown/markdown"
    },

    // applies to all .jsx files, including jsx blocks inside of Markdown files
    {
        files: ["**/*.jsx"],
        languageOptions: {
            parserOptions: {
                ecmaFeatures: {
                    jsx: true
                }
            }
        }
    },

    // ignore jsx blocks inside of test.md files
    {
        ignores: ["**/test.md/*.jsx"]
    }
];

Указание языка

Плагины могут предоставлять языки. Языки позволяют ESLint проверять языки программирования помимо JavaScript. Чтобы указать язык в файле конфигурации, используйте ключ language и присвойте имя языка в формате namespace/language-name. Например, следующее использует язык json/jsonc из @eslint/json для файлов *.json.

// eslint.config.js
import json from "@eslint/json";

export default [
    {
        files: ["**/*.json"],
        plugins: {
            json
        },
        language: "json/jsonc"
    }
];
Подсказка

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

Общие проблемы

  • Правила плагина, использующие API ESLint < v9.0.0
  • Конфигурации плагинов не были обновлены для формата flat config

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/use/configure/plugins

Spec-Zone.ru

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