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 нет возможности определить порядок зависимостей не подключая их, поэтому да, лучше использовать явное значение для каждого из модификаторов.