0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Руководство для настройки автоматического форматирования кода и проверки синтаксиса языка JavaScript. Рассказываем про утилиты Eslint и Prettier.</strong></p>
1
<p><strong>Руководство для настройки автоматического форматирования кода и проверки синтаксиса языка JavaScript. Рассказываем про утилиты Eslint и Prettier.</strong></p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Введение</a></li>
3
<ul><li><a>Введение</a></li>
4
<li><a>Какие проблемы решает eslint?</a></li>
4
<li><a>Какие проблемы решает eslint?</a></li>
5
<li><a>Для чего тогда нам нужен Prettier?</a></li>
5
<li><a>Для чего тогда нам нужен Prettier?</a></li>
6
<li><a>Перейдем к настройке</a></li>
6
<li><a>Перейдем к настройке</a></li>
7
<li><a>Для автоматического форматирования нам нужно</a></li>
7
<li><a>Для автоматического форматирования нам нужно</a></li>
8
<li><a>Заключение</a></li>
8
<li><a>Заключение</a></li>
9
</ul><h2>Введение</h2>
9
</ul><h2>Введение</h2>
10
<p>В этой статье мы рассмотрим основные правила линтера и способы его настройки под проект.</p>
10
<p>В этой статье мы рассмотрим основные правила линтера и способы его настройки под проект.</p>
11
<p><strong>Какой цели я хочу достигнуть в результате?</strong></p>
11
<p><strong>Какой цели я хочу достигнуть в результате?</strong></p>
12
<p>Иметь возможность форматировать свой код быстро, используя автоматизацию и лучшие практики программирования.</p>
12
<p>Иметь возможность форматировать свой код быстро, используя автоматизацию и лучшие практики программирования.</p>
13
<h2>Какие проблемы решает eslint?</h2>
13
<h2>Какие проблемы решает eslint?</h2>
14
<p><strong>Линтер</strong>- это статический анализатор для языка программирования. Он сообщает о потенциально опасных выражениях в коде, которые могут привести к аварийному завершению программы. Также линтер может сообщить об устаревших участках кода, синтаксических ошибках и неиспользованных переменных. Всего существует около 300 правил, которые можно включить/выключить по желанию.</p>
14
<p><strong>Линтер</strong>- это статический анализатор для языка программирования. Он сообщает о потенциально опасных выражениях в коде, которые могут привести к аварийному завершению программы. Также линтер может сообщить об устаревших участках кода, синтаксических ошибках и неиспользованных переменных. Всего существует около 300 правил, которые можно включить/выключить по желанию.</p>
15
<h2>Для чего тогда нам нужен Prettier?</h2>
15
<h2>Для чего тогда нам нужен Prettier?</h2>
16
<p>На большом проекте, как правило, работает несколько программистов. У каждого из них может быть свое мнение относительно качества кода и размера отступов в строке. Eslint может форматировать текст, но требует дополнительной кропотливой настройки. Облегчить задачу призвана утилита Prettier. У нее открытый исходный код и имеется хорошая поддержка сообщества. Большая часть правил оформления уже задана по умолчанию, но у пакета есть гибкая система настройки и удобный API, позволяющий описывать свои правила в конфигурационном файле формата .json/.yml. Это значит, что мы можем написать файл с едиными настройками для всей команды.</p>
16
<p>На большом проекте, как правило, работает несколько программистов. У каждого из них может быть свое мнение относительно качества кода и размера отступов в строке. Eslint может форматировать текст, но требует дополнительной кропотливой настройки. Облегчить задачу призвана утилита Prettier. У нее открытый исходный код и имеется хорошая поддержка сообщества. Большая часть правил оформления уже задана по умолчанию, но у пакета есть гибкая система настройки и удобный API, позволяющий описывать свои правила в конфигурационном файле формата .json/.yml. Это значит, что мы можем написать файл с едиными настройками для всей команды.</p>
17
<h2>Перейдем к настройке</h2>
17
<h2>Перейдем к настройке</h2>
18
<p>Начну с того, что здесь описана настройка линтера на примере VScode. Для других IDE будет разница только в поиске нужных расширений. Итак:</p>
18
<p>Начну с того, что здесь описана настройка линтера на примере VScode. Для других IDE будет разница только в поиске нужных расширений. Итак:</p>
19
<ol><li>Откройте Vscode и найдите в левой боковой панели пункт Extensions (ctrl/cmd+shift+X)</li>
19
<ol><li>Откройте Vscode и найдите в левой боковой панели пункт Extensions (ctrl/cmd+shift+X)</li>
20
<li>В строке поиска введите<em><strong>ESLint</strong></em>и установите пакет от Dirk Baeumer.</li>
20
<li>В строке поиска введите<em><strong>ESLint</strong></em>и установите пакет от Dirk Baeumer.</li>
21
<li>Проделайте аналогичную операцию для<strong>Prettier - Code formatter</strong>. (может потребоваться перезагрузка редактора после установки).</li>
21
<li>Проделайте аналогичную операцию для<strong>Prettier - Code formatter</strong>. (может потребоваться перезагрузка редактора после установки).</li>
22
<li>Дальше нам нужно установить сам линтер с помощью команды npm install eslint --save-dev</li>
22
<li>Дальше нам нужно установить сам линтер с помощью команды npm install eslint --save-dev</li>
23
<li>После установки линтера мы можем воспользоваться стандартным скриптом для базовой настройки конфигурационного файла. Для этого пишем в консоли следующую команду: eslint --init</li>
23
<li>После установки линтера мы можем воспользоваться стандартным скриптом для базовой настройки конфигурационного файла. Для этого пишем в консоли следующую команду: eslint --init</li>
24
<li>Скрипт попросит ответить нас на вопросы о текущем проекте и выставит соответствующие правила:</li>
24
<li>Скрипт попросит ответить нас на вопросы о текущем проекте и выставит соответствующие правила:</li>
25
</ol><p>Можете поэкспериментировать с настройками, чтобы понять, какой пункт меню за что отвечает. Итогом настройки будет являться сформированный файл<strong>.eslintrc.json</strong>. Вы можете создать файл с настройками самостоятельно и поместить его на один уровень с<em>package.json</em>.</p>
25
</ol><p>Можете поэкспериментировать с настройками, чтобы понять, какой пункт меню за что отвечает. Итогом настройки будет являться сформированный файл<strong>.eslintrc.json</strong>. Вы можете создать файл с настройками самостоятельно и поместить его на один уровень с<em>package.json</em>.</p>
26
<p>Для того, чтобы наша проверка работала, нам нужно установить необходимые пакеты:</p>
26
<p>Для того, чтобы наша проверка работала, нам нужно установить необходимые пакеты:</p>
27
<p>Если вы создали файл конфигурации с помощью<em>eslint --init</em>, скрипт предложит вам автоматически установить пакет для работы с React. Если вы хотите сделать это самостоятельно - пропишите:</p>
27
<p>Если вы создали файл конфигурации с помощью<em>eslint --init</em>, скрипт предложит вам автоматически установить пакет для работы с React. Если вы хотите сделать это самостоятельно - пропишите:</p>
28
<p>Пример настройки файлов для работы ESLint:</p>
28
<p>Пример настройки файлов для работы ESLint:</p>
29
<p><em>.eslintrc.json</em></p>
29
<p><em>.eslintrc.json</em></p>
30
<p><em>.prettierrc.json</em></p>
30
<p><em>.prettierrc.json</em></p>
31
<p>*Правила оформления кода. Полный список настроек вы можете найти<a>здесь</a>.</p>
31
<p>*Правила оформления кода. Полный список настроек вы можете найти<a>здесь</a>.</p>
32
<p><em>.eslintignore</em></p>
32
<p><em>.eslintignore</em></p>
33
<p><strong>Чтобы исключить из проверки директории/файлы указываем их в виде списка</strong></p>
33
<p><strong>Чтобы исключить из проверки директории/файлы указываем их в виде списка</strong></p>
34
<p>Основная настройка закончена. Теперь нам нужно, чтобы при сохранении файла наша IDE форматировала код и исправляла ошибки. Стоит уточнить, что ESLint умеет исправлять не всё и иногда вам придется править конфликты вручную.</p>
34
<p>Основная настройка закончена. Теперь нам нужно, чтобы при сохранении файла наша IDE форматировала код и исправляла ошибки. Стоит уточнить, что ESLint умеет исправлять не всё и иногда вам придется править конфликты вручную.</p>
35
<h2>Для автоматического форматирования нам нужно</h2>
35
<h2>Для автоматического форматирования нам нужно</h2>
36
<ul><li>Зайти в настройки -<strong>Ctrl/Cmd +Shift + P</strong></li>
36
<ul><li>Зайти в настройки -<strong>Ctrl/Cmd +Shift + P</strong></li>
37
<li>В строку поиска вписать - settings</li>
37
<li>В строку поиска вписать - settings</li>
38
<li>Выбрать пункт -<em>Preferences: Open Settings (JSON)</em>В файле<em>settings.json</em>добавляем:</li>
38
<li>Выбрать пункт -<em>Preferences: Open Settings (JSON)</em>В файле<em>settings.json</em>добавляем:</li>
39
</ul><p><strong>Tip.</strong>Если у вас возникли проблемы во время работы с ESLint, перейдите во вкладку Output и посмотрите вывод об ошибках.</p>
39
</ul><p><strong>Tip.</strong>Если у вас возникли проблемы во время работы с ESLint, перейдите во вкладку Output и посмотрите вывод об ошибках.</p>
40
<p><strong>TROUBLESHOOTING</strong></p>
40
<p><strong>TROUBLESHOOTING</strong></p>
41
<ol><li><p><strong>Q:</strong>Что делать, если при работе на Windows возникает следующая ошибка? [eslint] Delete 'cr' [prettier/prettier].</p>
41
<ol><li><p><strong>Q:</strong>Что делать, если при работе на Windows возникает следующая ошибка? [eslint] Delete 'cr' [prettier/prettier].</p>
42
<p><strong>A:</strong>Чтобы её решить, нужно немного поменять настройки в файле .eslintrc.json</p>
42
<p><strong>A:</strong>Чтобы её решить, нужно немного поменять настройки в файле .eslintrc.json</p>
43
</li>
43
</li>
44
<li><p><strong>Q:</strong>Не работают правила линтера или форматирование отличается от ожидаемого.</p>
44
<li><p><strong>Q:</strong>Не работают правила линтера или форматирование отличается от ожидаемого.</p>
45
<p><strong>A:</strong>Возможно, это следствие наличия в проекте других конфигурационных файлов. Они имеют разный приоритет исполнения. Например, файл .editorconfig имеет высший приоритет, чем .eslintrc., поэтому линтер будет выставлять настройки с его помощью.</p>
45
<p><strong>A:</strong>Возможно, это следствие наличия в проекте других конфигурационных файлов. Они имеют разный приоритет исполнения. Например, файл .editorconfig имеет высший приоритет, чем .eslintrc., поэтому линтер будет выставлять настройки с его помощью.</p>
46
</li>
46
</li>
47
<li><p><strong>Q:</strong>Выставляются двойные скобки, вместо одинарных.</p>
47
<li><p><strong>Q:</strong>Выставляются двойные скобки, вместо одинарных.</p>
48
<p><strong>A:</strong>Чаще всего это происходит из-за конфликта настроек линтера и prettier. Некоторые пресеты (<em>extends</em>в файле<em>.eslintrc.json)</em>содержат в себе правила настройки форматирования скобок. Последний указанный пресет переписывает правила предыдущих. Убедитесь в том, что "prettier" находится последним в списке extends.</p>
48
<p><strong>A:</strong>Чаще всего это происходит из-за конфликта настроек линтера и prettier. Некоторые пресеты (<em>extends</em>в файле<em>.eslintrc.json)</em>содержат в себе правила настройки форматирования скобок. Последний указанный пресет переписывает правила предыдущих. Убедитесь в том, что "prettier" находится последним в списке extends.</p>
49
</li>
49
</li>
50
</ol><h2>Заключение</h2>
50
</ol><h2>Заключение</h2>
51
<p>Часто в проектах могут использовать популярный конфиг от<em>Airbnb</em>. Он содержит больше правил и может вас запутать, поэтому рекомендую к нему обращаться после того, как усвоите базовые принципы работы линтера. Спасибо, что дочитали до конца. Работать с кодом теперь будет более приятно и гораздо быстрее.</p>
51
<p>Часто в проектах могут использовать популярный конфиг от<em>Airbnb</em>. Он содержит больше правил и может вас запутать, поэтому рекомендую к нему обращаться после того, как усвоите базовые принципы работы линтера. Спасибо, что дочитали до конца. Работать с кодом теперь будет более приятно и гораздо быстрее.</p>