Смотрел доклад Владимира Гриненко, и там была показана одна из фишек, что стили определенного блока подключаются в общий файл стилей, если этот блок задействован, а если его удаляешь из файла, например index.bemjson.js, то и стили этого блока автоматически отключаются, т.к. не нужно идти и вручную инклудить/удалять нужный файл стилей блока. Задействовав сборку project-stub на gulp, заметил, что если блок подключаешь, то стили его подключаются автоматически в результирующий css-файл, но когда удаляешь этот блок, то стили всё равно остаются для данного блока, хотя он уже не нужен. Это пока не доработка проекта на gulp? Либо я что-то не так настроил? Также при переопределении блока, стили одних правил тоже остаются, пример: в common.blocks для блока button задана высота 15px, а в desktop.blocks высота для данного блока уже 10px, но оба эти правила попадут в результирующий css, хотя на вебинаре было показано, что попадет только последнее переопределенное правило, т.к. это логично, ведь оно переопределяет правило написанное выше и ему уже нет смысла находиться в файле стилей. Там правда была выполнена команда для выкатки в production, после чего все стили почистились, такая же команда есть для сборки на gulp?
Привет!
Текущая версия https://github.com/bem/project-stub при пересборке с помощью команды
gulp
собирает только те стили, которые указаны в декларации (либо в зависимостях тех сущностей, которые указаны в декларации). Единственное исключение — это когда сначала проект собрался со списком сущностей, а после — без них, тогда просто не будет перезаписан результирующий файл (в него нечего писать). Это, пожалуй, баг, но как по мне крайне незначительный.Аналогичный ответ и про минификацию. Прямо сейчас в паплайне используется CSSO, так что безопасные переопределения одинаковых свойств будут удаляться из финального файла без всяких дополнительных телодвижений.
Если у тебя этого не происходит — делись конкретными кейсами, на которых можно воспроизвести проблему, будем чинить.
Привет, Владимир! Спасибо за оперативность. С тем, что когда удаляешь блок, а стили остаются почти разобрался, это из-за того, что я начал использовать препроцессор .sass. Т.е. он стили вносит когда есть блок, но когда блок удаляешь, то стили не удаляются. Реализовал все с использованием чистого css без препроцессора, всё встало на свои места - при удалении блока, удаляются и стили. Поэтому эту проблему при использовании .sass буду решать позже. Но сейчас при переопределении, одни стили для разных уровней остаются. Вот ссылка на проект https://yadi.sk/d/lU7-izzywrj9H (извиняюсь, что в таком виде, просто на быструю руку залил). Сейчас я на уровне common.blocks создал блок test и описал для него ширину и высоту, а на уровне desktop.blocks переопределил эти правила. В результирующем файле desktop.bundles/index/index.min.css при выполнении команды gulp build попадают стили для обоих уровней.
@Degtyarev-vg И то верно, исправил: https://github.com/bem/project-stub/pull/181/files Спасибо!
Спасибо большое, всё работает. Теперь, как ни странно, заработало и удаление стилей блоков, которые сначала использовались, а после были удалены при использовании препроцессора sass.