Как бы удивительно это ни звучало, написание рабочего кода на самом деле является легкой частью при разработке веб-сайта, приложения или любого программного обеспечения. Сделать все это масштабируемым, протестированным, должным образом документированным и легким для внесения вклада — сложная задача.
Одна часть имеет кодовую базу, которая является чистой и последовательной. Чистота, потому что поддерживать уродливый «странный» код определенно не приятно и непротиворечиво, потому что это делает обслуживание базы кода проще и быстрее. Если код везде выглядит одинаково в программном обеспечении, то должно быть достаточно быстро привыкнуть к тому, как он написан.
Когда дело доходит до Sass, есть несколько вещей, которые вы можете сделать, чтобы сделать ваш код чистым и последовательным. Первым из них будет соблюдение некоторых правил кодирования, таких как CSS CSS Guidelines и Sass Guidelines . Другое дело — привязать вашу кодовую базу.
Если вы не знакомы со словом lint , вот что говорит Википедия:
В компьютерном программировании lint было именем, изначально присвоенным конкретной программе, которая помечала некоторые подозрительные и непереносимые конструкции (вероятно, ошибки) в исходном коде языка Си. Этот термин теперь применяется в общем для инструментов, которые отмечают подозрительное использование в программном обеспечении, написанном на любом компьютерном языке.
Что было бы подозрительным использованием в Sass? Это зависит от того, как вы определяете подозрительные, но, в более широком смысле, это может быть просто вопросом обеспечения того, чтобы таблица стилей оставалась легко читаемой и не сложной. Например, можно ограничить использование вложенности селектора одним уровнем.
Чтобы связать нашу базу кода Sass, существует один адский инструмент под названием SCSS-lint . Теперь давайте начнем с плохих новостей: SCSS-lint является гемом Ruby, и независимо от того, как вы его используете (CLI, Grunt, Gulp…), вам нужно будет установить этот гем заранее. С другой стороны, некоторые замечательные люди в настоящее время разрабатывают порт SCSS-lint в виде пакета npm, поэтому мы могли бы рано или поздно избавиться от этого утомительного дополнительного шага. Правильно. Давайте покончим с этим:
$ gem install scss_lint
Примечание: гем называется scss_lint
по причине именования, но инструмент командной строки на самом деле является scss-lint
. И библиотека называется SCSS-lint. Потому что это не было достаточно сложно … ?
Начало работы с инструментом CLI
SCSS-lint поставляется с большим количеством опций. На самом деле, так много, что поначалу это может показаться немного ошеломляющим. К счастью, на самом деле не так много тех, которые мы будем часто использовать, поэтому давайте посмотрим на них.
С помощью параметра -c
или --config
вы можете передать путь к файлу конфигурации, который будет полезен для определения правил, которые вы хотите применить к своей базе кода. Например:
$ scss-lint . --config .scss-lint.yml
В зависимости от вашего проекта вы можете использовать опцию -e
или --exclude
чтобы исключить некоторые файлы или папки из процесса линтинга. Например, вы можете не захотеть линтовать свои сторонние библиотеки или модули вашего узла. Например
$ scss-lint . --exclude ./node_modules/**/*
Для более сложного использования --exclude
вы можете определить его в файле конфигурации, передаваемом через --config
.
Есть и другие варианты, но я чувствую, что этого более чем достаточно, чтобы начать.
Первый аргумент, передаваемый scss-lint
— это папка для запуска. Если опущено, по умолчанию .
текущая папка. Если вы хотите указать конкретную папку, вы можете:
scss-lint ./assets/stylesheets
Настройка линтеров
Теперь, когда мы готовы использовать нашу базу кода Sass, нам нужно определить, к каким правилам мы должны придерживаться. SCSS-lint имеет так много линтеров , как они называются, настолько, что перечислять их все здесь будет слишком долго. Я рекомендую вам ознакомиться с документацией линтеров .
Идея состоит в том, что вы создаете YAML-файл в корне вашего проекта, содержащий всю вашу конфигурацию линтинга. По умолчанию SCSS-lint будет пытаться .scss-lint.yml
файл .scss-lint.yml
в текущей папке, поэтому я рекомендую вам назвать этот файл следующим образом. Однако, если вы предпочитаете другое имя, вы можете; обязательно передайте его с параметром --config
, вот и все.
У Sass Guidelines есть файл конфигурации, готовый для вас, чтобы вы могли его взять и использовать в своем проекте. Обязательно посмотрите более подробно, если вы хотите настроить вещи, но в целом это должно сработать.
Linting при совершении
Единственное, что нужно сделать, — это убедиться, что код чист ( помечен ) при фиксации с помощью ловушки предварительной фиксации. Я немного поиграл с тестированием Sass и ловушками перед фиксацией в предыдущей статье здесь, на SitePoint, под названием « Тестирование библиотеки Sass» .
Если вы не уверены, что такое ловушка перед фиксацией, в основном это механизм, направленный на выполнение некоторых операций перед применением фиксации. Если какая-либо из выполненных операций вызывает ошибку, то фиксация прерывается.
Убедиться, что код написан перед фиксацией в удаленном репозитории, — это идеальный вариант использования Git-хука. В этом разделе мы увидим, как мы можем установить это очень простым способом.
Для этого мы будем использовать очень легкий пакет npm, обеспечивающий поддержку перехватчиков Git в направлении файла package.json
. Для этого есть много библиотек, но я лично выбрал предварительную фиксацию . Вот как это выглядит:
{ "scripts": { "lint": "scss-lint ." }, "pre-commit": [ "lint" ] }
При фиксации ловушка предварительной фиксации запускается и запускает скрипт lint
npm (точно так же, как npm run lint
). Скрипт lint
npm, как видно из кода, запускает scss-lint .
команда. Если SCSS-lint возвращает ошибку, фиксация прерывается, и код должен быть исправлен для прохождения фиксации.
Если вы запускаете SCSS-lint через Gulp, Grunt или что-то еще, вы можете запустить задачу в сценарии lint
npm вместо непосредственного использования scss-lint
. В том же ключе вы можете передать такие параметры, как --config
или --exclude
.
Последние мысли
Мы всегда можем пойти дальше, но я думаю, что это хорошее введение в SCSS-lint, и мы действительно можем использовать его в существующих и новых проектах простым, но мощным способом.
Нет причин продолжать комить грязный код, ребята, перед тем как нажать его,