Skip to content

Conversation

@dima117
Copy link
Contributor

@dima117 dima117 commented Jul 7, 2017

Т.к. проверка тэгов не имеет к css-неймингу никакого отношения, плагин это никак не проверяет и настройку allowTag добавлять не нужно.

Если я правильно понял, проблема в том, что во вложенных селекторах не проходит валидация наличия в селекторе класса блока. В этом PR добавлены настройки, позволяющие отключать отдельные правила валидации.

Посмотрите изменения, пожалуйста.

cc @skad0, @tadatuta

@dima117 dima117 requested a review from eGavr July 7, 2017 19:07
Copy link

@skad0 skad0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не понимаю почему проверка нейминга css должна падать на тегах без возможности этого избежать.
Эти опции дают возможность просто выключить проверки, которые нужны (я думаю всегда), но при этом всегда валиться на селекторах тегов и любых других.
А еще:

  • не вижу причин не обновить пакеты
  • надо заменить npm run unit на npm test

!options && (options = {});

!options.hasOwnProperty('requireBlockClass') && (options.requireBlockClass = true);
!options.hasOwnProperty('requireBemNaming') && (options.requireBemNaming = true);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

лучше не начинать с отрицания, а использовать || тут и выше

options.hasOwnProperty('requireBemNaming') || (options.requireBemNaming = true);

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ну и так как опция не используется далее, можно все это сразу ниже в присваивании делать, но то такое, чисто дело вкуса

* @this {CssNaming}
* @param {string[]} excludes - Исключения для проверки соответствия названий классов БЭМ-нотации
* @param {Object} options - Настройки валидации
* @param {String[]} [options.excludes] - Исключения для проверки соответствия названий классов БЭМ-нотации
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это примитив, с маленькой буквы

* @param {string[]} excludes - Исключения для проверки соответствия названий классов БЭМ-нотации
* @param {Object} options - Настройки валидации
* @param {String[]} [options.excludes] - Исключения для проверки соответствия названий классов БЭМ-нотации
* @param {Boolean} [options.requireBlockClass] - Проверять наличие класса блока в селекторе
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

тож с маленькой

@dima117
Copy link
Contributor Author

dima117 commented Jul 14, 2017

Не понимаю почему проверка нейминга css должна падать на тегах без возможности этого избежать.

Проверка никак не обрабатывает тэги. Она корректно падает на селекторах, в которых нет класса блока.

Эти опции дают возможность просто выключить проверки, которые нужны (я думаю всегда), но при этом всегда валиться на селекторах тегов и любых других.

Ваша проблема в том, что валидатор ничего не знает про вложенность и другие плагины для кастомного синтаксиса стилей. Логика игнорирования классов помогает в частном случае, но не решает проблему в целом и сильно усложняет код. Для корректного решения нужно, чтобы валидатор знал о логике ваших плагинов (например, формировал css при помощи идентичного набора плагинов, проверял его, а потом узнавал позицию ошибки по sourcemap).

Отключение этой проверки решает вашу проблему на 80% и реализуется на порядок проще. По соотношению цена/качество этот вариант сильно лучше.

@dima117
Copy link
Contributor Author

dima117 commented Jul 14, 2017

не вижу причин не обновить пакеты
надо заменить npm run unit на npm test

Это не входит в текущую задачу. Сделай отдельный PR и я его сразу волью.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants