https://gist.github.com/ec7034b7a409c826e989 Объявил зависимость shouldDeps модификатора от другого булевого модификатора.
({
shouldDeps:[
{ mods: { visible: true}}
]
})
В итоге в собранный deps.js булевый модификатор попадает дважды. До исходного модификатора:
{
"block": "drawer",
"mod": "visible"
}
После исходного модификатора:
{
"block": "drawer",
"mod": "visible",
"val": true
}
При этом появление модификатора visible до исходного является нежелательным и неожиданным.
Сборщик ENB настроенный generator-bem-stub
// cc @andrewblond
Зависимость от модификатора со строковым значением тоже добавляет в deps.js 2 записи: До:
После:
Однако модификатор
_visible_fullбудет вставлен уже в правильном месте, т.е. после исходного модификатора.@Guria, привет!
По историческим причинам в
deps.jsформате бандла, реализованного в ENB информация о модификаторе добавляется 2 раза, вначале как модификатор по*, а потом по значению. Нужно это для одного редкого кейса:В данном случае
block_modрассматривается не как булевый, а как общий.Если я правильно понял твою проблему, то тебе просто нужно использовать
mustDepsвместоshouldDeps, чтобыvisibleмодификатор был явно раньше, чемdrawer.@andrewblond
visibleу меня свойстваcss, которые должны быть после. Я вопрос решил, использовав модификатор со строковым значением (был ещё вариант задать у них!important).Проблема, как я понял, в том, что булевый модификатор и реализация общего поведения для модификатора с разными значениями имеют "одинаковое имя файла".
Да, всё так. Логика такая: пока есть только один файл
block_mod— это булевый модификатор, как только добавляется файлов со значениямиblock_mod_val, то сразу следует рассматриватьblock_modкак общий.В ENB нет возможности определить порядок зависимостей не подключая их, поэтому да, лучше использовать явное значение для каждого из модификаторов.