Stylelint. Как правильно настроить
Линтер поможет избежать стандартных ошибок в коде, привести values к одному виду и т.д. Его успешно можно использовать для CSS
, Sass
(обоих синтаксисов), PostCSS
.
Установка линтера
Устанавливаем последнюю версию Stylelint
:
npm i -D stylelint
Установка дополнительных плагинов
В моей работе часто встречаются кейсы, когда фронтенд разработчики пишут переходы и анимации для комплексных или неанимируемых свойств. Первые негативно влияют на производительность сайта, вторые — избыточны. В таком случае помогает установка дополнительных правил.
npm i -D stylelint-performance-animation
Конфигурационный файл
Настройки Stylelint
находятся в файле .stylelintrc.json
, который нужно разместить рядом с package.json
.
Настройки, которые я использую на ряде проектов для Drupal и standalone, вот уже несколько лет.
{
"plugins": ["stylelint-performance-animation"],
"rules": {
"plugin/no-low-performance-animation": true,
"at-rule-no-unknown": [
true,
{
"ignoreAtRules": ["media", "import"]
}
],
"block-no-empty": true,
"color-no-invalid-hex": true,
"comment-no-empty": true,
"declaration-block-no-duplicate-properties": [
true,
{
"ignore": ["consecutive-duplicates-with-different-values"]
}
],
"declaration-block-no-shorthand-property-overrides": true,
"declaration-empty-line-before": [
"never",
{
"ignore": ["after-declaration"]
}
],
"font-family-no-duplicate-names": true,
"font-family-no-missing-generic-family-keyword": true,
"function-calc-no-unspaced-operator": true,
"function-linear-gradient-no-nonstandard-direction": true,
"keyframe-declaration-no-important": true,
"media-feature-name-no-unknown": true,
"no-duplicate-at-import-rules": true,
"no-duplicate-selectors": true,
"no-empty-source": true,
"no-extra-semicolons": true,
"no-invalid-double-slash-comments": true,
"property-no-unknown": [true, { "ignoreProperties": ["aspect-ratio"] }],
"selector-pseudo-class-no-unknown": true,
"selector-pseudo-element-no-unknown": true,
"selector-type-no-unknown": true,
"string-no-newline": true,
"unit-no-unknown": true,
"max-empty-lines": 2,
"string-quotes": "single"
}
}
Игнорирование неизвестных properties
Можно через запятую добавить в массив другие свойства, если они неизвестны Stylelint.
{
"rules": {
"property-no-unknown": [true, { "ignoreProperties": ["aspect-ratio"] }]
}
}
Другие настройки можно подсмотреть в документации.
Игнорирование файлов или отдельных строк
Этого делать не рекомендуется, но иногда всё же возникает необходимость добавить маркер игнорирования определённой строки или свойства.
Игнорирование всего CSS файла:
/* stylelint-disable */
Игнорирование следующей строки:
/* stylelint-disable-next-line */
Игнорирование определённого правила:
/* stylelint-disable no-duplicate-selectors */
Хорошего CSS!
Ссылки: