Рубрики
Без рубрики

Eslint: основные факты о необходимых передних инструментах

Недавно я получаю больше участия в предельном развитии. Чем больше я делаю, тем больше мой разум и моя душа потеряются в его хаотическом мире. Даже простое приложение для списка TO-DO-DO-SIEP может легко потребовать кучу инструментов – Eslint, Babel, WebPack, чтобы назвать несколько пакетов только

Недавно я получаю больше участия в предельном развитии. Чем больше я делаю, тем больше мой разум и моя душа потеряются в его хаотическом мире. Даже простое приложение для списка Do-List может легко потребовать куча инструментов- Eslint , Бабел , WebPack , чтобы назвать несколько пакетов, просто чтобы начать.

К счастью, там много старших наборов там, поэтому нам не нужно делать все с нуля. С ними все уже настроено, поэтому мы можем начать писать первую строку кода сразу. Это экономит время на повторяющихся, скучных задачах, которые могут быть отличными для опытных разработчиков.

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

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

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

Что будет включено:

  • Эсвет <- Мы здесь
  • Варить
  • WebPack
  • Поток
  • Машинопись
  • Jest.

Достаточно предисловия, давайте начнем с первого инструмента: Eslint.

Eslint – это, как подразумевает имя, лговик для Ecmascript . И определение линта:

Хотя кода и хлопковые семена не имеют никаких отношений, независимо от кода или семян хлопка, линь поможет сделать вещи более чистыми и более последовательными. Мы не хотим видеть код, как это:

const count = 1;
const message  =  "Hello, ESLint"
    count += 1

Это оба выглядит уродливым и имеет ошибку. Вот когда Eslint шаги, чтобы помочь с этим. Вместо того, чтобы позволить ошибке быть сбрасываться в консоль браузера, когда мы запускаем код, ESLINT поймает его, как мы печатаем (ну не совсем: нам понадобится расширения для этого редактора или IDE, которые будут накрыты позже).

Конечно, эта ошибка не сложно выяснить, но не было бы ни приятнее иметь помощника, напоминаю нам каждый раз, когда мы собираемся ошибиться, и, возможно, автоматически исправляя его для нас? Хотя Eslint не может поймать все виды ошибок, он, по крайней мере, запятнал нам некоторые усилия, поэтому мы можем провести время на другие вещи, которые имеют значение и нужно человеческое внимание.

Теперь, когда мы знаем, что такое Eslint и почему нам это нужно, давайте немного глубже и проверим, как это работает. По сути, мы можем сломать его до трех больших шагов.

Анализатор

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

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

const tool = 'ESLint' // 1
  const  tool  =  "ESLint" // 2

Когда мы читаем два строки выше, мы немедленно знаем, что они идентичны и могут быть прочитаны как «есть постоянная под названием инструмент со значением Eslint “. Для компьютера, который не понимает смысла, эти две линии выглядят совсем разными. В результате, если мы кормим в RAW Code для Eslint, это почти невозможно что-то сделать.

Когда все усложняется и трудно взаимодействовать – подумайте о том, как у нас может быть компьютер, чтобы понять, что мы делаем, – абстракция, может быть побегом. Ассортируя вещь, мы скрываем все ненужные детали, уменьшаем шум и держите всех на одной странице, что облегчает связь. В приведенном выше примере одно пространство или два пространства не имеют значения, ни единые кавычки или двойные кавычки.

Другими словами, это то, что делает парсером. Он преобразует RAW CODE в абстрактное синтаксическое дерево (AST), и этот AST используется в качестве среды для правил Lint для базы на. Есть еще много шагов, которые нужно сделать парширу, чтобы создать AST – если вы заинтересованы в том, чтобы узнать больше о том, как создается AST, Это руководство Имеет хороший обзор.

Правила

Следующим шагом в процессе является запустить AST через список правил. Правило – это логика того, как выяснить потенциальные существующие проблемы в коде из AST. Вопросы здесь не обязательно синтаксические или семантические ошибки, но могут быть стилистическими. Выходные данные, выданные из правила, будут включать некоторую полезную информацию для последующего использования, такие как линии кода, позиций и информативных сообщений о проблеме.

В дополнение к улавливанию проблем, правило может даже автоматически исправить код, если это возможно. Например, когда Нет – многопространства Применяется к вышеуказанному коду, он обременяет все избыточные пробелы, что делает код чистым и последовательным.

  const  tool  =  "ESLint" // 2
// becomes
const tool = "ESLint" // 2

В разных сценариях правило может использоваться только на разных уровнях, только предупреждение, или строгое ошибка – и иметь различные варианты, что дает нам контроль над тем, как использовать правило.

Результат

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

ESLINT может быть использован в качестве автономного инструмента с его надежным CLI, но это способ голыми кости для использования Eslint. Мы не хотим вводить команду каждый раз, когда мы хотим, чтобы кодекс Lint, особенно в среде разработки. Решение для этого состоит в том, чтобы интегрировать ESLINT в нашу среду разработки, чтобы мы могли написать код и увидеть проблемы, попавшимися Eslint все в одном месте.

Этот вид интеграции исходит из расширений, специфичных для удостоверения личности или редакторов. Эти расширения требуют, чтобы Eslint работать с тех пор, как они управляют Eslint за сценой – не удивительно, что нам все еще нужно установить Eslint вместе с ними, они ничто без Eslint. Этот принцип применяется к другим расширениям IDE или редактора, которые мы используем ежедневно.

Помните вывод из правила, который мы говорили выше? Расширение будет использовать его для отображения в IDE или редакторе. Как именно отображается выход, зависит от того, как расширение реализовано и как IDE или редактор открыт для его расширений. Некоторые расширения также используют преимущества коррекции выпуска из правил для изменения кода на сохранение, если мы включаем его.

Конфигурация – это основная мощность, которая дает универсальность для инструмента. Eslint не отличается от этого, кроме того, что имеет самую полную конфигурацию среди других инструментов. В общем, нам нужен файл или место, чтобы поставить конфигурацию, и есть пара вариантов нас.

Все они сворачиваются до двух основных способов: либо у нас есть отдельный файл конфигурации для каждого инструмента, или мы объединяем их все в Package.json. . .eslintrc.js. является одним из файлов, которые Eslint будет искать ее конфигурацию, а также тот, который с наивысшим приоритетом.

Следующее, что нам нужно знать о конфигурации, – это его иерархия и каскадное поведение. Благодаря этим функциям нам не нужно иметь файл конфигурации в каждой отдельной папке в проекте.

Если файл конфигурации не существует в папке, ESLINT просто смотрит на родитель папки для одного до тех пор, пока он не может найти его. Тогда он отступит к конфигурации широкой по умолчанию в ~/.eslintrc Отказ В противном случае файл конфигурации добавит или переопределяет на верхних уровнях.

Однако есть специальный твик на этом. Если мы укажем root: true В файле конфигурации поиск остановится в этом файле вместо того, чтобы расти раньше. Кроме того, ESLINT будет использовать этот файл конфигурации в качестве корневой конфигурации, и все настройки детей будут основаны на этом.

Это не только ограничено Eslint – эти вещи распространены для других инструментов. Давайте поговорим об конкретной конфигурации Eslint.

Анализатор

Роль парсера в Eslint обсуждалась выше. По умолчанию Eslint использует Espree как его парсер. Мы можем изменить этот парсер на другой совместимый, как Babel-Eslint или @ Typeycript-Eslint/Parser Если мы используем Babel или Typeyctry, соответственно.

Чтобы настроить парсер, мы используем Parseroptions Отказ Среди вариантов, поддерживаемых ESPREE, вот некоторые мы часто используем и должны обратить внимание на:

  • ЭЦМАВЕРСИЯ

Нам нужно указать соответствующую версию ECMA для функций, которые мы хотим использовать. Например, если Emcaversion: 5 , код ниже даст некоторые ошибки.

```javascript
let a = [1, 2, 3, 4] // error due to `let` keyword
var b = [...a, 5] // error due to spread syntax
```

Парсер не может разбирать код, потому что оба Пусть Ключевое слово и синтаксис с распространением только что вводили в ES6. Изменение Emcaversion до 6 или выше просто разрешение ошибок.

  • Тип источника

В настоящее время мы в основном пишем все в модулях, затем связывают их вместе. Так что этот вариант, большую часть времени, должно быть модуль Отказ

Еще одно значение, которое мы можем использовать – а также по умолчанию – это Сценарий Отказ Разница в том, можем ли мы использовать JS модули Или нет, то есть, используйте Импортировать и Экспорт ключевое слово. В следующий раз мы получим это сообщение об ошибке Ошибка разборки: «Импорт» и «Экспорт» может появиться только с «Sourcetype: Module» Мы знаем, где посмотреть.

  • Ecmafeatures.jsx.

Там могут быть дополнительные функции ES, которые мы хотим использовать, например JSX синтаксис. Мы используем Ecmafeatures.jsx: правда Чтобы включить эту функцию. Обратите внимание, что поддержка JSX от ESPREE не совпадает с jsx в реакции. Если мы хотим реагировать на конкретные JSX, мы должны использовать eslint-plugin-rect для лучших результатов.

Если мы используем другой парсер, эти опции более или менее одинаковы. У некоторых может быть меньше вариантов, а другие могут иметь больше, но все они определены под Парижеры .

Среда

Это зависит от того, где работает код: есть разные предопределенные глобальные переменные. У нас есть окно , документ в браузере, например. Это было бы раздражает, если Нет-undef Правило включено, и Eslint продолжает говорить нам окно или Документ не определен.

env Вариант здесь, чтобы помочь. Указав список сред, ESLINT узнает о глобальных переменных в этих условиях, и позвольте нам использовать их без слова.

Есть особая среда, нам нужно отметить, ES6 . Это неявно набор Parseroptions.ecmaversion до 6 и включить все функции ES6, кроме модулей, которые нам все еще нужно использовать Parseroptions.sourcetype: "Модуль" раздельно.

Имея ту же конфигурацию для правил снова и снова в разных проектах, может быть утомительным. К счастью, мы можем повторно использовать конфигурацию и только переопределить правила по мере необходимости с расширяться . Мы называем этот тип Config Confights, и Eslint уже есть два для нас: Eslint: рекомендуется и Eslint: все Отказ

Условно, общие конфиги Eslint имеют Eslint-config префикс, чтобы мы могли легко найти их через NPM с помощью Eslint-config ключевое слово. С сотнями результатов есть некоторые популярные, такие как eslint-config-airbnb или Eslint-config-google Вы называете это.

Вне коробки Eslint имеет кучу правил для обслуживания различных целей от возможных ошибок, лучших практик, ES6 для стилистических вопросов. Более того, чтобы проверить свои способности, Eslint имеет большое количество 3-х сторонних правил, предусмотренных почти тысячей плагинов. Аналогично для всеобъемлющих конфигов, плагины ESLINT префиксированы eslint-plugin и доступны на НПМ с eslint-plugin. ключевое слово.

Плагин определяет набор новых правил, и в большинстве случаев он обнародует свои удобные конфиги. Например, eslint-plugin-rect Дает нам два разделяемых конфиска, eslint-plugin-rection: Рекомендуется и eslint-plugin-rect: все Так же, как Eslint: Рекомендуется и Eslint: все Отказ Чтобы использовать один из них, нам нужно, во-первых, определить имя плагина и, во-вторых, продлить конфиг.

{
  plugins: ["react"],
  extends: "plugin:react/recommended"
}

// Note that we need to prefix the config by `plugin:react`

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

Мы почти там – мы почти достигнуты до конца. Последнее, но не в последнюю очередь, мы обсудим популярную пару Eslint, Красивее Отказ Короче говоря, красивее – это самые популярные код. Хотя красивее можно использовать в одиночку, интегрировать его в Eslint, увеличивает опыт, и eslint-plugin-stretter делает эту работу.

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

Вот как eslint-plugin-stretter работает. Он проходит красивее, как правило, за сценой и сравнивает код до и после пробега сквозь красивее. Наконец, он сообщает различия в качестве индивидуальных проблем Eslint. Чтобы исправить эти проблемы, плагин просто использует отформатированный код из красивее.

Чтобы иметь эту интеграцию, нам нужно установить оба красивее и eslint-plugin-stretter Отказ eslint-plugin-stretter Также поставляется с Eslint-Plugin-Breettier: рекомендуется Конфигурация, которая проходит Eslint-config-stretter Отказ Поэтому нам также нужно установить Eslint-config-stretter использовать его.

{
  "plugins": ["prettier"],
  "extends": "plugin:prettier/recommended"
}

Код связи или форматтеры стали стандартом де-факто в разработке программного обеспечения в целом, и Eslint, в частности, в предельном развитии.

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

Эта статья была первоначально размещена в мой блог Отказ

Оригинал: “https://www.freecodecamp.org/news/the-essentials-eslint/”