Войти с помощью github
Форум /

Привет,

Мы выпустили очень важный релиз, в котором исправили критичные ошибки в базовых технологиях сборщика 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!