v2.0.0
[2.0.0] — 2023–07–20
Изменено
- Основной файл конфига конвертирован из js в json с переименованием его в стандартное имя конфига для stylelint —
.stylelintrc
. Теперь stylelint распознаёт его как свой конфиг и применяет прямо в этом проекте. Конфиг теперь можно взять и не изменяя использовать в другом месте даже без подключения его как зависимость. И, что наиболее важно, можно легко копировать из него строки и вставлять в свой, расширяемый этим, конфиг для переопределения правил. - Правила отсортированы по алфавиту для более быстрого и удобного поиска. Именование правил уже само по себе группирует их так, чтобы было проще их найти.
package.json
реорганизован для большего удобства пользователей пакета.- Команды линтинга теперь не нуждаются в уточнении синтаксиса, благодаря переопределениям (см. ниже).
Добавлено
-
Бэйджи в README для наглядности состояния проекта.
-
Файл с текстом лицензии.
-
Переопределения (
overrides
) для кастомных синтаксисовless
иscss
. В эти переопределения:- для обоих синтаксисов добавлено отключение правила
declaration-property-value-no-unknown
, как и советует документация Stylelint; - для
less
перенесено из общих правил разрешение кастомной функцииfade()
; - для
scss
перенесено из общих правил разрешение кастомных директив, в которые добавлены@use
,@forward
,@if
,@else
и@for
.
- для обоих синтаксисов добавлено отключение правила
-
Плагин
stylelint-codeguide
, возвращающий поддержку удаляемых из Stylelint 76 стилистических правил. Теперь добавив к ним префиксcodeguide/
можно продолжать использовать их в stylelint@16+. -
Правило
function-linear-gradient-no-nonstandard-direction
с требованием валидных и стандартных значения направления линейных градиентов: углы илиto
с названием одной или двух смежных сторон./* Хорошо */ a { background: linear-gradient(45%, #ffffff, #000000); } a { background: linear-gradient(to top, #ffffff, #000000); } a { background: linear-gradient(to top left, #ffffff, #000000); } /* Плохо */ a { background: linear-gradient(45, #ffffff, #000000); } a { background: linear-gradient(top, #ffffff, #000000); } a { background: linear-gradient(to top top, #ffffff, #000000); } a { background: linear-gradient(to top bottom, #ffffff, #000000); }
- Правило
declaration-colon-newline-after
с требованием переноса строки после двоеточия в многострочных декларациях.
/* Хорошо */ a { background: url("foo.png"), url("bar.png"); } a { background: url("foo.png"), url("bar.png"); } a { transform: translate(1px, 1px); } a { transform: translate( 1px, 1px ); } /* Плохо */ a { transform: translate( 1px, 1px ); } a { background: url("foo.png"), url("bar.png"); }
- Правило
-
Правило
import-notation
с требованием указания пути простой строкой, а не функциейurl()
, потому что хоть в CSS и работают оба варианта, но Sass склеивает только варианты со строками, а сurl()
оставляет в коде./* Хорошо */ @import "foo.css"; /* Плохо */ @import url("foo.css");
-
Правило
selector-max-compound-selectors
с запретом уровня сложности составных селекторов выше 3. Сложносоставные селекторы — это те, что ошибочно называют селекторами потомка или вложенности. Ошибочно, потому что любые комбинаторы повышают уровень сложности составного селектора, включая+
и~
, которые «не увеличивают вложенность»./* Хорошо */ .foo div {} .foo > .bar {} .foo + .bar:not(a ~ b) {} /* Плохо */ .foo .bar .baz {} .foo .bar + .baz {} .foo { .baz { & > .bar {} } }
Исправлено
-
Ограничение вложенности. Правило
max-nesting-depth
ограничивает именно вложенности блоков кода (фигурных скобок) друг в друга (уберегая от «ад вложенности» вроде «ада колбэков» в JS), а не так называемые «вложенные селекторы», которые правильнее называть сложносоставными селекторами. Причём прежняя настройка ингнорирования директивы@media
отключала линтинг этим правилом внутри вложенной@media
, что позволяет делать там неограниченное количество уровней вложенности. Новая настройка игнорирует псевдоклассы всегда и директивы тогда, когда они не содержат собственные CSS-правила, а лишь оборачивают собой другие блоки кода. И при этом внутри проигнорированных псевдоклассов и директив продолжается подсчёт уровеней вложенности./* Хорошо */ a { b { /* 1 */ i { /* 2 */ top: 0; } } } .foo { &--bar { /* 1 */ a { /* 2 */ top: 0; } } } a { &:hover { b { /* 1 */ i { /* 2 */ top: 0; } } } } a { @media print { b { /* 1 */ i { /* 2 */ top: 0; } } } } a { @media print { /* 1 */ left: 0; b { /* 2 */ top: 0; } } } /* Плохо */ a { b { /* 1 */ i { /* 2 */ u { /* 3 */ top: 0; } } } } .foo { &--bar { /* 1 */ b { /* 2 */ i { /* 3 */ top: 0; } } } } a { &:hover { b { /* 1 */ i { /* 2 */ u { /* 3 */ top: 0; } } } } } a { @media print { /* 1 */ left: 0; b { /* 2 */ i { /* 3 */ top: 0; } } } } a { @media print { b { /* 1 */ i { /* 2 */ u { /* 3 */ top: 0; } } } } }
Удалено
- Ненужные отключения некоторых правил.
Обновлено
- Этот файл (на основе Keep a Changelog) для удобства.