HTML Diff
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>