Привет,
Мы выпустили очень важный релиз, в котором исправили критичные ошибки в базовых технологиях сборщика ENB.
В новых версиях пакетов основные исправления коснулись порядка подключения файлов при сборке. Мы изменили правила сборки по нескольким суффиксам, переписали алгоритм раскрытия зависимостей и исправили ошибки в работе нескольких технологий. Больше непредсказуемых ошибок при сборке проектов не будет.
Подробнее про все изменения в этом посте.
Сборка для нескольких суффиксов
Поменялись правила упорядочивания списка файлов по нескольким суффиксам (расширениям).
Теперь файлы группируются в первую очередь по именам БЭМ-сущностей:
Файлы должны быть отсортированы сначала по имени сущности, и только потом по суффиксу.
Было:
file.ext file-2.ext file.ext-2 file-2.ext-2
Стало:
file.ext file.ext-2 file-2.ext file-2.ext-2
Файлы должны быть отсортированы сначала по уровню, и только потом по суффиксу.
Было:
level/block/block.ext level-2/block/block.ext level/block/block.ext-2 level-2/block/block.ext-2
Стало:
level/block/block.ext level/block/block.ext-2 level-2/block/block.ext level-2/block/block.ext-2
Новый порядок следования нужен для правильного и точечного переопределения БЭМ-сущности, т.к. при нём не будет возникать коллизий с переопределениями других БЭМ-сущностей.
Раскрытие зависимостей
В технологии deps-old исправлена ошибка, при которой в определенных условиях не выполнялись требования некоторых must-зависимостей, а значит, нарушался порядок подключения БЭМ-сущностей.
Важно: для исправления ошибки переписан алгоритм раскрытия зависимостей. Несмотря на то, что мы пытались полностью сохранить
«привычный» порядок при раскрытии зависимостей, единственной гарантией правильной сборки по-прежнему является наличие правильно
написанных deps.js
-файлов.
Например, в каждом блоке, использующем локализацию, необходима must-зависимость от i-bem__i18n
, а для блоков, реализованых в
технологии BEMHTML, — от i-bem__html
.
Кроме того, у технологии deps-old появилась опция strict, которая включает строгий режим раскрытия зависимостей.
Аналогично работает технология deps: при обнаружении хотя бы одной циклической must-зависимости сборка прекращается с ошибкой.
Если же строгий режим отключен, то в консоль будут выводится предупреждения о циклических must
-зависимостях.
Кроме того
Помимо основных изменений исправлены ошибки в технологиях deps,
merge-bemdecl и subtract-deps.
Также правки внесены в чтение и обработку deps.js
-файлов.
Подробнее обо всех изменениях читайте в истории изменений.
Перед обновлением рекомендуем ознакомиться с руководством по миграции.
Вопросы про сборщик традиционно ждем на нашем форуме с меткой enb.
Приятного использования и Stay BEMed!