Closed belozer closed 8 years ago
@belozyorcev Это сделано осознанно, чтобы в продакшен не попадал бесполезный мусор.
Как это помогает? Почему срабатывает ошибка, а не проходит мимо?
если человек создал блок с шаблоном или файлом стилей, то он собирался написать туда что-то осмысленное — ошибки не будет. но если вдруг создал и забыл, то ошибка при сборке ему об этом напомнит и он либо таки напишет, что собирался, либо удалит файл, если он больше не нужен.
Вполне логично :)
Но может стоит в таких случаях более дружелюбный знак давать?
пожалуй, было бы неплохо, но мы вряд ли доберемся до этой задачи в обозримое время
Помню аналогичную задачу год назад ;-) Может поправить?
Опишу проблему, на которую на днях наткнулся опять ))
Делал проект на работе... Создал блок, и тут мне нужно было уже идти... Закрыл крышку ноутбука.
Вечером много времени потратил на поиск ошибки, пока не вспомнил, что я создал блок и не описал его.
@belozyorcev Чтобы быстро понять, что именно произошло в последний момент должен быть помочь git show
последнего коммита ;)
На самом деле это примерно то, о чем я и говорю: если бы не сломалось, остался бы бесполезный забытый шаблон.
Но если есть уверенность, что такое поведение нужно изменить, можно bemhtml
из https://github.com/bem/project-stub/blob/bem-core/.bem/levels/blocks.js#L27 перенести в массив на 24 строке и положить технологию для сборки bemhtml на уровне проекта в .bem/techs/
. В ней отнаследоваться от текущей технологии и перекрыть метод, возвращающий шаблон любым своим кастомым результатом. Подробнее о том, как писать собственные технологии для сборки см. в https://ru.bem.info/tools/bem/bem-tools/tech-modules/ (нужно смотреть на v2
).
@tadatuta Может в базовый шаблон добавить //
в начало строки?
@zxqfox +1
Простите, что пишу суда, но...
Это сделано осознанно, чтобы в продакшен не попадал бесполезный мусор.
А csso или еще какой пре-, пост-процессор не вырежет этот пустой селектор без тела? В случае bemhtml — разве xjst не отбросит пустые матчеры?
@zxqfox ты прав, xjst
в продакшен-режиме действительно выкидывает такие матчеры, так что можно и поправить. спасибо!
Помню аналогичную задачу год назад ;-) Может поправить?
@zxqfox предположу, ты говоришь об этом https://github.com/bem/bem-core/pull/520
@tadatuta вижу такое решение: добавить в документацию о том как переопределять шаблоны создания блоков, а может это уже где то есть, тогда положить ссылку на видное место.
давайте завернём результат шаблона в комментарии
ага, вот так:
// TODO implement block('block')
@ilyar Ну хз.
Я бы оставил:
// block('azaza')()
@zxqfox + за TODO в том что IDE и редакторы могут их агрегировать в одном месте, но я не настаиваю, просто идея.
@ilyar В целом идея :+1:, но в vim/sublime этого из коробки нет, зато в сублайме есть Ctrl/Cmd+/
, который убирает комменты //
. Я бы лучше предусмотрел возможность настройки этого каким-то образом. Но, судя по всему, это вопрос будущего, а пока надо что-то минимальное интегрировать, и поправить баг.
Т.е. голосую за вынос фич в отдельные issue ;-), а тут по минимуму.
upd p.s. Эти issue, по-хорошему, в отдельный проект должны уехать, ибо это вопросы bem-tools как таковых. Но, если я правильно понимаю, замороженные bem-tools нам намекают, что надо писать что-то новое уже используя модули из «модульной сборки». а когда оно появится — хз.
А почему бы не сделать что-то следующего вида?
block('azaza')(
content()('Your template "azaza" is blank');
)
Из-плюсов:
Закрываю в пользу нового bem-tools-create
При генерации блоков - генерируется bemhtml следующего содержания
При сборке проекта это вызывает ошибку
block('block')()
— и всё работает нормальноу styl таже проблема. Генерируется только название класса, но отсутствуют скобки
вместо