Prettier — это самоуверенный форматировщик кода, который автоматически форматирует код. Таким образом, формат кода становится единым на протяжении всего проекта. Если несколько разработчиков работают над одним и тем же проектом, вполне вероятно, что у них могут быть разные настройки текстового редактора, что может сделать формат кода несогласованным. Например, текстовый редактор разработчика «А» может занимать больше места на вкладках, чем разработчик «Б», из-за разных настроек текстового редактора. Чтобы решить эту проблему, у Prettier есть файл конфигурации, в котором определены все настройки, что делает формат кода согласованным во всем проекте независимо от настроек их редактора.
ESLint — утилита для поиска ошибок. Основная цель использования ESLint — поддерживать согласованность нашего формата кода, а также легко находить ошибки.
Husky — это инструмент JavaScript, который позволяет запускать некоторый код в различных частях рабочего процесса Git. Он использует Git Hooks и перехватывает различные события Git, такие как pre-commit и pre-push.
Lint-staged позволяет запускать код для поэтапных файлов git, чтобы автоматизировать утомительную часть вашего рабочего процесса, такую как форматирование с помощью Prettier и/или анализ с помощью ESLint.
- На приведенной выше диаграмме показан процесс автоматизации Prettier, ESLint с использованием Husky и Lint-staged.
- Когда разработчик пытается зафиксировать промежуточные файлы, Husky перехватит фиксацию и запустит git-хук перед фиксацией.
- Как следует из названия, предварительная фиксация на самом деле является ловушкой, которая запускается перед фиксацией. Причина запуска хука перед фиксацией состоит в том, чтобы проверить, все ли файлы правильно отформатированы и не содержат ошибок, прежде чем они будут зафиксированы.
- Затем Husky вызовет Lint-staged.
- Lint-staged в основном содержит программу/код, который форматирует файлы и проверяет наличие ошибок.
- Если есть какая-либо ошибка, файлы не будут зафиксированы, а ошибки будут показаны.
- Остальные файлы будут зафиксированы.