Skip to content

Commit

Permalink
feat(blog) Перевод Обновленная интеграция Nuxt ESLint
Browse files Browse the repository at this point in the history
  • Loading branch information
Ivan Bochkarev committed Jun 3, 2024
1 parent da3c1c2 commit 9996de6
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions content/7.blog/24.eslint-module.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Обновленная интеграция Nuxt ESLint
description: Мы переработали наши интеграции ESLint для поддержки ESLint v9 с плоской конфигурацией, а также новый модуль с гораздо большими возможностями.
description: Мы переработали наши интеграции ESLint для поддержки ESLint v9 с flat config, а также новый модуль с гораздо большими возможностями.
image: /assets/blog/nuxt-eslint-refreshed.png
authors:
- name: Anthony Fu
Expand All @@ -25,22 +25,22 @@ npx nuxi module add eslint

## Справочная информация

[ESLint](https://eslint.org/) стал незаменимым инструментом в современной веб-разработке. Он помогает отлавливать ошибки и обеспечивать последовательный стиль кодирования в проекте. В Nuxt мы делаем все возможное, чтобы обеспечить ESLint «из коробки», облегчая его использование, настройку и следование лучшим практикам, которые мы рекомендуем.
[ESLint](https://eslint.org/) стал незаменимым инструментом в современной веб-разработке. Он помогает отлавливать ошибки и обеспечивать последовательный код стайл в проекте. В Nuxt мы делаем все возможное, чтобы обеспечить ESLint «из коробки», облегчая его использование, настройку и следование лучшим практикам, которые мы рекомендуем.

С тех пор и Nuxt, и ESLint претерпели значительные изменения. Исторически сложилось так, что в итоге мы получили [несколько различных пакетов и интеграций для ESLint в Nuxt](https://eslint.nuxt.com/guide/faq#package-disambiguation), и не всегда было понятно, какой из них для чего использовать. Мы получили много отзывов от нашего сообщества.

Чтобы улучшить ситуацию, а также сделать ее безопасной для будущего, мы недавно обновили наши интеграции ESLint, чтобы они поддерживали [ESLint v9](https://eslint.org/blog/2024/04/eslint-v9.0.0-released/) с [плоским конфигом](https://eslint.org/docs/latest/use/configure/configuration-files). Это открывает гораздо больше возможностей для настройки вашего ESLint, обеспечивая более простой и унифицированный опыт.

## Nuxt ESLint монорепо
## Nuxt ESLint монорепозиторий

Мы перенесли пакеты, связанные с ESLint, разбросанные по разным репозиториям, в один монорепо: [`nuxt/eslint`](https://github.com/nuxt/eslint), с выделенным новым сайтом документации: [eslint.nuxt.com](<https://eslint.nuxt.com/>).
Мы перенесли пакеты, связанные с ESLint, разбросанные по разным репозиториям, в один монорепозиторий: [`nuxt/eslint`](https://github.com/nuxt/eslint), с выделенным новым сайтом документации: [eslint.nuxt.com](<https://eslint.nuxt.com/>).

Чтобы помочь разобраться в различиях между каждым пакетом и понять, какой из них использовать, мы также создали страницу [FAQ](https://eslint.nuxt.com/guide/faq), где сравниваем их и объясняем сферы их применения.

Этот монорепо теперь включает в себя:

- `@nuxt/eslint` - Новый, универсальный модуль ESLint для Nuxt 3, поддерживающий flat config ESLint с учетом проекта и многое другое.
- `@nuxt/eslint-config` - Неописуемый, но настраиваемый общий конфиг ESLint для Nuxt 3. Поддерживает как [flat config](https://eslint.org/docs/latest/use/configure/configuration-files), так и [унаследованный формат](https://eslint.org/docs/latest/use/configure/configuration-files-deprecated).
- `@nuxt/eslint-config` - Не описываемый, но настраиваемый общий конфиг ESLint для Nuxt 3. Поддерживает как [flat config](https://eslint.org/docs/latest/use/configure/configuration-files), так и [унаследованный формат](https://eslint.org/docs/latest/use/configure/configuration-files-deprecated).
- `@nuxt/eslint-plugin` - Плагин ESLint для Nuxt 3 обеспечивает правила и конфигурации, специфичные для Nuxt.
- Два пакета для Nuxt 2 в режиме обслуживания.

Expand All @@ -55,7 +55,7 @@ Flat config - это формат конфигурации, представле
- **Flat config**: `eslint.config.js` `eslint.config.mjs` etc.
- **Legacy config**: `.eslintrc` `.eslintrc.json` `.eslintrc.js` etc.

### Почему плоская конфигурация?
### Почему Flat Config?

[Эта запись в блоге ESLint](https://eslint.org/blog/2022/08/new-config-system-part-1/) подробно объясняет мотивацию flat config. Вкратце, унаследованный формат `eslintrc` был разработан в ранние времена JavaScript, когда модули ES и современные возможности JavaScript еще не были стандартизированы. В нем задействовано множество неявных соглашений, а функция `extends` делает конечный результат конфигурации труднопонимаемым и предсказуемым. Это также делает общие конфигурации сложными для поддержки и отладки.

Expand Down Expand Up @@ -128,7 +128,7 @@ export default nuxt({
})
```

...и т. д. функция фабрики в flat config позволяет предустановкам покрывать сложность базовой конфигурации ESLint и предоставлять высокоуровневые и удобные абстракции для настройки конечными пользователями. И все это без необходимости беспокоиться о внутренних деталях.
...и т. д. Функция фабрики в flat config позволяет предустановкам покрывать сложность базовой конфигурации ESLint и предоставлять высокоуровневые и удобные абстракции для настройки конечными пользователями. И все это без необходимости беспокоиться о внутренних деталях.

Несмотря на то, что такой подход позволяет получить Prettier-подобный опыт с минимальными конфигурациями (поскольку он основан на ESLint), вы все равно получаете полную гибкость в настройке и переопределении тонких правил и плагинов по мере необходимости.

Expand Down Expand Up @@ -201,32 +201,32 @@ export default [
npx nuxi module add eslint
```

### Инспектор конфигурации интеграции DevTools
### Интеграция инспектора конфигурации DevTools

Во время миграций и исследований нового плоского конфига мне пришла в голову идея сделать интерактивный UI-инспектор для плоского конфига и сделать конфигурации более прозрачными и простыми для понимания. Мы интегрировали его в [Nuxt DevTools](https://github.com/nuxt/devtools), когда у вас установлен модуль `@nuxt/eslint`, так что вы легко получите к нему доступ, когда он вам понадобится.
Во время миграций и исследований нового flat config мне пришла в голову идея сделать интерактивный UI-инспектор для flat config и сделать конфигурации более прозрачными и простыми для понимания. Мы интегрировали его в [Nuxt DevTools](https://github.com/nuxt/devtools), когда у вас установлен модуль `@nuxt/eslint`, так что вы легко получите к нему доступ, когда он вам понадобится.

![Скриншот инспектора конфигурации ESLint, запущенного как вкладка в Nuxt DevTools](/assets/blog/nuxt-eslint-inspector.png)

Инспектор позволяет увидеть окончательно решенные конфигурации, правила и плагины, которые были включены, а также выполнить быстрое сопоставление, чтобы увидеть, как правила и конфигурации были применены к определенным файлам. Он отлично подходит для отладки и изучения того, как ESLint работает в вашем проекте.

Мы рады, что команда ESLint также находит его полезным и заинтересована в том, чтобы он был доступен для более широкого сообщества ESLint. Позже мы присоединились к усилиям и сделали его [официальным инспектором конфигурации ESLint](https://github.com/eslint/config-inspector) (кстати, он построен на Nuxt). Вы можете прочитать [этот анонс](https://eslint.org/blog/2024/04/eslint-config-inspector/) для получения более подробной информации.
Мы рады, что команда ESLint также находит его полезным и заинтересована в том, чтобы он был доступен для более широкого сообщества ESLint. Мы присоединились позже и помогли сделать его [официальным инспектором конфигурации ESLint](https://github.com/eslint/config-inspector) (кстати, он построен на Nuxt). Вы можете прочитать [этот анонс](https://eslint.org/blog/2024/04/eslint-config-inspector/) для получения более подробной информации.

### Генерация типов для правил

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

Еще раз спасибо за то, что новый плоский конфиг стал динамическим с таким количеством возможностей. Мы придумали новый инструмент, [`eslint-typegen`](https://github.com/antfu/eslint-typegen), который может генерировать соответствующие типы из схемы конфигурации правил для каждого правила **на основе фактических плагинов, которые вы используете**. Это означает, что это универсальное решение, которое работает для любых плагинов ESLint, и типы всегда точны и актуальны.

В модуле `@nuxt/eslint` эта функция интегрирована из коробки, так что вы сразу же получите этот потрясающий опыт:

![Скриншот кода VS Code, демонстрирующий проверку типов и автозаполнение с помощью конфигурации правил ESLint](/assets/blog/nuxt-eslint-typegen.png)

### Dev Server Checker
### Программа проверки сервера разработчиков

С появлением нового модуля мы воспользовались возможностью объединить [`@nuxtjs/eslint-module`](https://github.com/nuxt-modules/eslint) и программу проверки сервера разработчиков для ESLint в новый модуль `@nuxt/eslint` в качестве опциональной возможности.

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

Чтобы включить эту функцию, вы можете установить опцию `checker` в значение `true` в опциях модуля:
Expand Down

0 comments on commit 9996de6

Please sign in to comment.