Есть желание сделать команду bem rename для переименования БЭМ-сущностей.
Как бы вам было удобно вызывать такую команду?
Мой вариант:
bem rename block1 block2
bem rename block__elem block2_elem2
bem rename block__elem block2
То есть, исходная и конечная БЭМ-сущности записываются в виде строкового представления (как в css классах).
UPD. Нужны мнения в задаче: https://github.com/bem/be
мне кажется, что логичнее по аналогии с create
хотя последнее громоздко
логичнее сделать сначала create по аналогии с остальными, а потом для всего сделать возможность использовать "шоткаты" в виде b__e_m
+1 к Вегеду.
В принципе запись как имя класса - удобнее.
Но нужно чтобы все тулзы поддеживали такой формат
Внутри текущего.
Между уровнями можно сделать bem move.
Мне очень хочется выпилить команды bem create {block,elem,mod,val}. Уже сейчас можно использовать более простой и логичный вариант:
И т.д.
Все опции можно указывать по несколько раз. В итоге создаваться будут все самые «глубокие» сущности. Например, при указании -b block -m mod -v val1 -v val2 будут созданы block_mod_val1 и block_mod_val2.
Логично. Для bem create я уже давно хочу поддержать такую форму указания БЭМ-сущностей.
Завёл таск, чтобы можно было следить:
https://github.com/bem/bem-tools/issues/319
Да, напишешь однострочник в shell для этого. Уровень можно будет указать через опцию --level.
Уровни? Т.е. будет возможность перечисления множества уровней?
Как планируется поступить с переименованиями в js-файлах? Есть надежда автоматически разбираться, что переименовывать, а что нет, или будет задаваться вопрос пользователю по поводу сомнительных случаев?
Или это будет примитивный rename, переименовывающий только файлы?
В команде - 1 уровень. В shell-скрипте - все, что угодно.
Можно и несколько добавить, если действительно очень надо
Начнём с примитивного — только. Это уже будет в бесконечное количество раз лучше, чем сейчас Файлы сделать достаточно просто, весь необходимый utility код для этого есть, нужно только утилиту собрать.
Дальше будем развивать. Чтобы поддержать это в файлах технологий нужно придумать удобное расширение API модулей технологий. Именно технологии должны заниматься рефакторингом конечных файлов.
Опачки!
https://github.com/bem/bem-tools/pull/319
Смотрите UPD в посте.
Да, конечно! Уже сталкивался с переименованием при рефакторинге несколько раз. И переименование на нескольких уровнях очень бы мне тогда пригодился.
А то и правда пришлось с shell замурачиваться.
Это отстой. Если делать то делать крсиво и хорошо.
Зачем мне тогда вообще bem rename?
Когда тем же linux/unix rename perlexpr + shell можно делать тоже самое?
Должно быть максимально все удобно.
конструкция
bem rename block__elem block2_elem2
мне вполне по нраву, но переименования на нескольких уровнях переопределения тоже должно тогда быть.
Да, наверное, технологии должны рефакторить свои файлы, как-то помечая сомнительные случаи, чтобы их разруливать уже вручную. Что-то мне это напоминает... Поведение git при конфликтах?)
Если указывать технологию перед именем блока, то получится
bem create -T css block
Ну а так, это ещё одна причина, чтобы выпилить существующие команды
bem create {block,elem,mod,val}