markdownlint
Начнем со стандартизации. Наша документация хранится в маркдаун-файлах и вот было бы здорово, если бы машина сама проверяла насколько эти файлы выглядят единообразно: отступы, структура, семантика и прочее.
Для этого нам подойдет markdownlint. Давайте попробуем его прикрутить и начнем с постановки задачи:
Что мы хотим: автоматически проверять все измененные md-файлы на соответствие стандартам линтера markdownlint.
Когда мы хотим: всякий раз, когда кто-то что-то коммитит в проект.
Давайте разбираться:
Почему следует запускать проверку до коммита? Так вы будете уверены, что в репозиторий не попадут файлы, которые не соответствуют вашим стандартам. Сделаем это через pre-commit.
Почему стоит проверять только измененные файлы? Во-первых, проверка всего проекта может занять много времени. Во-вторых, конкретный контрибьютер может не должен отвечать за ошибки в других файлах. Реализуем эту историю через lint-staged.
Писать код будем в рамках созданной ранее задачи:
Дополните задачу описанием, создайте ветку и переключитесь на нее.
Теперь напишем промт:
Хочу автоматически проверять все измененные md-файлы на соответствие стандартам линтера markdownlint: https://github.com/DavidAnson/markdownlint.
Проверять хочу только измененные файлы, используй для этого lint-staged: https://github.com/lint-staged/lint-staged.
Запускать проверку хочу до коммита. Используй для управления хуками husky: https://github.com/hyiso/husky.
Добавь команду для автоматического исправления ошибок, но не запускай ее при коммите.
Не добавляй инструкцию по использованию.
Отправьте промт в чат и следуйте указаниям агента. Если все команды будут выполнены, то в итоге вы получите сообщение об успешной установке всех зависимостей и добавлении новых настроек.
Отлично! Теперь давайте внесем некоторые изменения в файл с принципами:
- Сломаем уровень заголовков: после заголовка первого уровня сразу пойдет третий.
- Уберем отступ между заголовком третьего уровня и текстом.
- Добавим пробел в заголовке третьего уровня.
Попробуем закоммитить изменения:
git add .
git commit -m "test lint"
Система не пропустила коммит и отобразила список ошибок.
- MD001: Нарушение последовательности уровней заголовков
- MD009: Лишний пробел после заголовка
- MD022: Отсутствие пустой строки после заголовка
- MD013: Слишком длинная строка
Исправьте ошибки MD001, MD009, MD022 в файле. А ошибку MD013 мы просто добавим в исключения. Для этого напишите в чат: Добавь исключение для правила MD013. В итоге Cursor создаст файл .markdownlint.json и добавит туда исключение: Markdownlint. Rules
Попробуйте снова закоммитить изменения:
Поздравляю! Вы настроили первый линтер. Двигаемся дальше.