Минимальная поддерживаемая версия Node.js теперь 20 (было >=4). Обновите .nvmrc или конфигурацию CI.
Модульная система ym (modules.define/modules.require) заменена на нативные ES-модули.
До:
modules.define('my-block', ['i-bem-dom', 'events'], function(provide, bemDom, events) {
provide(bemDom.declBlock(this.name, { /* ... */ }));
});После:
import bemDom from 'bem:i-bem-dom';
import events from 'bem:events';
export default bemDom.declBlock('my-block', { /* ... */ });Все импорты bem:* разрешаются на этапе сборки плагином vite-plugin-bem-levels в реальные пути файлов с учетом приоритетов уровней переопределения для платформ.
Зависимость jquery теперь ^4.0.0.
Основные изменения в jQuery 4:
$.unique()удалён. Используйте$.uniqueSort().- Удалён ряд устаревших методов. Подробнее см. jQuery 4.0 upgrade guide.
Зависимость bem-core теперь ^5.0.0. Подробнее см. руководство по миграции bem-core.
Весь инструментарий ENB (включая borschik и bem-tools) заменён на Vite.
До:
./node_modules/.bin/enb makeПосле:
npm run build # все 3 платформы (desktop, touch-pad, touch-phone)
npm run build:desktop # только desktop
npm run build:touch-pad # только touch-pad
npm run build:touch-phone # только touch-phone
npm run dev # сервер разработкиКонфигурация Vite находится в build/vite.config.js. Пользовательский плагин vite-plugin-bem-levels в build/plugins/ отвечает за сканирование уровней переопределения BEM и разрешение модулей.
Линтеры jshint и jscs заменены на ESLint 10 с плоской конфигурацией (eslint.config.js).
npm run lintРегрессионные тесты в браузере мигрированы с Hermione (SauceLabs) на Playwright.
npm run test:browser # запуск тестов в headless-режиме
npm run test:browser:ui # запуск тестов с UI PlaywrightФайлы .post.css не изменились. Обработка PostCSS теперь выполняется нативно через Vite вместо ENB-плагинов. Конфигурация PostCSS находится в postcss.config.js.
Замените .travis.yml на .github/workflows/ci.yml. Новый CI выполняет задачи lint, test:browser и build.
Директория .githooks/ заменена на husky. Скрипт prepare в package.json автоматически настраивает husky при npm install.
Bower больше не используется. Все зависимости управляются через npm.
В блоках input, select и textarea модификатор width вынесен из темы islands. Это дает возможность использовать его без указания темы. Теперь при динамической генерации BEMJSON нужно добавить модификатор в зависимости:
({
shouldDeps : { block : 'input', mods : { width : 'available' } }
})