enb/enb-bemxjst

Throw error if there is no base templates

Closed this issue · 9 comments

blond commented

If you do not add base teamples — assembly will be successful, but if you call BEMHTML.apply(bemjson) you will see strange error:

Error: Match failed.

@blond What you mean by base templates?
How it correlates with bemtree and bemhtml mocks which are used if surce files are not exists?

@blond

И все-таки нужно решить что делать по этой задаче.
Насколько я помню наше с тобой обсуждение ничем не закончилось

@veged рекомендовал добавить вот такую проверку

oninit(function(exports, context) {
  if(!context.BEMContext) throw Error('Seems like you have no base templates from i-bem.bemhtml');
})
blond commented

@tadatuta такая проверка выдаст ошибку во время выполнения, а не во время сборки.

Кажется, что с этим уже вполне можно жить.
Но если у вас есть более годный способ — я только за.

blond commented

@tadatuta, можно анализировать каждый файл на наличие oninit(function(exports, context) { и внутри BEMContext. Или такой анализ лучше делать где-то в bemhint?

Анализировать каким способом?
Если просто текстовый код регулярными выражениями, то кажется, что опасно, так как код шаблонов в принципе может быть абсолютно произвольным

Кажется, вариант @veged пока самый годный

Пока удалось реализовать проверку и вывод ошибки только для production режима.
Завел связанную задачу в bem-xjst

Готовый код по данной задаче находится в ветке issue-60