Предложить новое правило
ESLint — это прежде всего правила. На протяжении большей части истории проекта у нас было более 200 правил, и их список продолжает расти. Однако мы не можем принимать любые предложенные правила, поскольку все правила должны слаженно работать вместе. Поэтому у нас есть рекомендации о том, какие правила могут входить в ядро ESLint, а какие лучше реализовать как пользовательские правила и плагины.
Примечание: С 2020 года мы принимаем только правила, связанные с новыми возможностями ECMAScript. Мы предпочитаем, чтобы новые правила реализовывались в плагинах.
Рекомендации для правил ядра
В целом правила ядра ESLint должны быть:
- Широко применимыми. Распространяемые нами правила должны быть важны для большого числа разработчиков. Индивидуальные предпочтения относительно редких шаблонов не поддерживаются.
- Универсальными. Правила не должны быть настолько узкоспециализированными, чтобы пользователям было трудно понять, когда их применять. Правило обычно слишком узкоспециализировано, если для описания его действия требуется более двух союзов «и» (если a и b и c и d, то это правило выдаёт предупреждение).
- Независимыми. Правила должны полноценно работать сами по себе. Правилам категорически запрещено знать о состоянии или наличии других правил.
- Уникальными. Никакие два правила не должны выдавать одинаковые предупреждения. Пересекающиеся правила сбивают конечных пользователей с толку, и подразумевается, что правила ядра ESLint не должны пересекаться.
- Независимыми от библиотек. Правила должны основываться исключительно на средах выполнения JavaScript, а не на конкретных библиотеках или фреймворках. Например, правила ядра не должны применяться только при использовании jQuery, но у нас могут быть правила, применимые только при использовании Node.js (среды выполнения).
-
Не конфликтующими. Ни одно правило не должно прямо конфликтовать с другим. Например, если у нас есть правило, требующее ставить точки с запятой, мы не можем также иметь правило, запрещающее их (поэтому у нас есть одно правило,
semi, которое делает и то и другое).
Несмотря на то что это формальные критерии включения, каждое правило оценивается отдельно.
Предложить правило
Если вы хотите предложить новое правило, ознакомьтесь с инструкцией о том, как создать pull request, или отправьте issue, заполнив шаблон для нового правила.
Нам нужна вся эта информация, чтобы определить, подходит ли правило для включения в ядро.
Принять правило
Чтобы правило было принято в ядро ESLint, оно должно:
- Соответствовать всем критериям, перечисленным в разделе «Рекомендации для правил ядра».
- Иметь сторонника среди членов команды ESLint, который будет добиваться включения правила.
- Быть связано с возможностью ECMAScript, достигшей стадии 4 в течение предшествующих 12 месяцев.
Помните, что у нас более 200 правил, и это создаёт значительную нагрузку как для конечных пользователей, так и для команды ESLint, которой приходится их поддерживать. Поэтому для рассмотрения возможности включения в ESLint новые правила должны считаться исключительно важными.
Реализация — ваша ответственность
Команда ESLint не реализует новые правила, предложенные пользователями, поскольку у нас ограниченное число участников и нам нужно сосредоточиться на общей дорожной карте проекта. После принятия правила вы несёте ответственность за его реализацию и документирование. Также вы можете привлечь другого человека, чтобы он помог вам реализовать правило. Член команды ESLint, выступивший сторонником правила, поможет вам пройти оставшиеся этапы этого процесса.
Альтернатива: создайте собственные правила
Помните, что ESLint полностью расширяем, а значит, вы можете создавать собственные правила и распространять их с помощью плагинов. Мы предусмотрели такую возможность, поскольку не хотим быть привратниками для всех возможных правил. Даже если мы не включим правило в ядро, это не значит, что вы не сможете получить именно то правило, которое вам нужно. Подробнее см. в документации Пользовательские правила и Создание плагинов.
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/contribute/propose-new-rule