You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: update READMEs for v5, add Russian changelog/migration
- Replace Travis CI / david-dm badges with GitHub Actions badge
- Update development instructions (Vite, Playwright, node:test)
- Remove vow from block list, update browser support
- Add 5.0.0 sections to CHANGELOG.ru.md and MIGRATION.ru.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.ru.md
+38Lines changed: 38 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,43 @@
1
1
# История изменений
2
2
3
+
## 5.0.0
4
+
5
+
### Несовместимые изменения
6
+
7
+
-**Только ESM**: Вся кодовая база мигрирована с модульной системы `ym` (`modules.define`/`modules.require`) на нативные ES-модули (`import`/`export`). Зависимость `ym` удалена.
8
+
-**Сборка через Vite**: ENB и все 17+ связанных пакетов заменены на [Vite](https://vite.dev/). Кастомный плагин `vite-plugin-bem-levels` обеспечивает сканирование BEM-уровней, разрешение виртуальных модулей `bem:*` и генерацию barrel-файлов для цепочек переопределений.
9
+
-**jQuery 4.0**: Peer-зависимость `jquery` обновлена с `^3.x` до `^4.0.0`. Основное изменение API: `$.unique()` удалён — используйте `$.uniqueSort()`.
10
+
-**Node.js 20+**: Минимальная поддерживаемая версия Node.js — 20 (было 8).
11
+
-**Нативные промисы**: `vow` удалён. Весь код использует нативный `Promise`.
12
+
-**Нативный тест-раннер**: Серверные тесты используют `node:test` и `node:assert` вместо `mocha`/`chai`.
13
+
-**Playwright**: Браузерные тесты используют [Playwright](https://playwright.dev/) вместо `mocha-phantomjs` (PhantomJS мёртв).
14
+
-**ESLint 10**: Линтинг мигрирован с `jshint`/`jscs` на ESLint 10 с flat-конфигурацией (`eslint.config.js`).
15
+
-**GitHub Actions CI**: Travis CI заменён на GitHub Actions.
16
+
-**Husky + lint-staged**: `git-hooks` заменён на `husky` и `lint-staged`.
17
+
18
+
### Крупные изменения
19
+
20
+
- Все `.vanilla.js` и `.js` файлы конвертированы в ES-модули с синтаксисом `import`/`export`.
21
+
- Цепочки переопределений модулей (напр., `jquery` с расширениями pointer-событий) обрабатываются автоматически сгенерированными barrel-файлами через `vite-plugin-bem-levels`.
22
+
- Блок `i18n` сохраняет свой API, но использует нативные ES-модули внутри.
23
+
- Браузерные спек-тесты (28 файлов, 500+ тестов) запускаются через Vite dev server + Playwright.
24
+
- Vite генерирует платформенно-специфичные сборки (`desktop`, `touch`) с jQuery как внешней зависимостью.
Все `bem:*` импорты разрешаются на этапе сборки плагином `vite-plugin-bem-levels` в реальные пути файлов с учётом приоритетов уровней для конкретной платформы.
29
+
30
+
### Переопределения модулей
31
+
32
+
Переопределения модулей, которые ранее использовали `modules.define` с колбэком, получающим предыдущее значение модуля, теперь обрабатываются через barrel-файлы, генерируемые Vite-плагином.
33
+
34
+
Было (переопределение ym):
35
+
36
+
```js
37
+
modules.define('jquery', function(provide, $) {
38
+
$.event.special.pointerclick= { /* ... */ };
39
+
provide($);
40
+
});
41
+
```
42
+
43
+
Стало (side-effect импорт в barrel-файле):
44
+
45
+
```js
46
+
// Barrel-файл автоматически сгенерирован vite-plugin-bem-levels:
- Ряд устаревших методов удалён. См. [руководство по обновлению jQuery 4.0](https://jquery.com/upgrade-guide/4.0/).
59
+
60
+
### vow → нативный Promise
61
+
62
+
Зависимость `vow` удалена. Весь асинхронный код теперь использует нативный `Promise`.
63
+
64
+
Было:
65
+
66
+
```js
67
+
var vow =require('vow');
68
+
var promise =vow.resolve(value);
69
+
```
70
+
71
+
Стало:
72
+
73
+
```js
74
+
constpromise=Promise.resolve(value);
75
+
```
76
+
77
+
### Система сборки: ENB → Vite
78
+
79
+
Весь инструментарий ENB заменён на Vite.
80
+
81
+
Было:
82
+
83
+
```bash
84
+
./node_modules/.bin/enb make
85
+
```
86
+
87
+
Стало:
88
+
89
+
```bash
90
+
npm run build # обе платформы
91
+
npm run build:desktop # только desktop
92
+
npm run build:touch # только touch
93
+
```
94
+
95
+
Конфигурация Vite находится в `build/vite.config.js`. Кастомный плагин `vite-plugin-bem-levels` в `build/plugins/` обеспечивает сканирование BEM-уровней и разрешение модулей.
96
+
97
+
### Node.js 20+
98
+
99
+
Минимальная поддерживаемая версия Node.js — 20 (было 8). Обновите `.nvmrc` или конфигурацию CI.
100
+
101
+
### Линтинг: jshint/jscs → ESLint 10
102
+
103
+
Замените кастомные `.jshintrc` или `.jscs.json` правила на flat-конфигурацию ESLint (`eslint.config.js`).
104
+
105
+
### Тестирование
106
+
107
+
-**Серверные тесты**: `mocha`/`chai` заменены на `node:test`/`node:assert`.
108
+
-**Браузерные тесты**: `mocha-phantomjs` заменён на Playwright. Запуск: `npm run test:browser`.
109
+
-**Все тесты**: `npm run test:all` запускает серверные и браузерные тесты.
110
+
111
+
### CI/CD: Travis → GitHub Actions
112
+
113
+
Замените `.travis.yml` на `.github/workflows/ci.yml`. Новый CI запускает задачи lint, test, test:browser и build.
114
+
115
+
### Git-хуки: git-hooks → husky
116
+
117
+
Замените `.githooks/` на конфигурацию husky. Скрипт `prepare` в `package.json` автоматически настраивает husky при `npm install`.
Documentation on `bem-core`in a much more informative way is also available at [bem.info](https://en.bem.info/libs/bem-core/). It is also available [in Russian](https://ru.bem.info/libs/bem-core/).
3
+
Documentation on `bem-core` is also available at [bem.info](https://en.bem.info/libs/bem-core/). It is also available [in Russian](https://ru.bem.info/libs/bem-core/).
4
4
5
5
## What is this?
6
6
@@ -9,11 +9,17 @@ It provides the minimal stack for coding client-side JavaScript and templating.
9
9
10
10
## Use
11
11
12
-
The easiest way to run a project with `bem-core` is to use
13
-
the [project-stub](https://github.com/bem/project-stub).
12
+
Install as an npm dependency:
14
13
15
-
You can use any other way you are familiar with to include the library into
16
-
the project.
14
+
```shell
15
+
npm install bem-core@5
16
+
```
17
+
18
+
jQuery 4 is a peer dependency — install it alongside:
19
+
20
+
```shell
21
+
npm install jquery@^4.0.0
22
+
```
17
23
18
24
## Inside
19
25
@@ -30,7 +36,7 @@ the project.
30
36
-`objects` — helpers for JS-objects
31
37
-`functions` — helpers for JS-functions
32
38
-`events` — JS-events
33
-
-`querystring` — helpers for work with querystring
39
+
-`uri` — helpers for work with URIs and querystrings
34
40
-`tick` — global timer
35
41
-`idle` — IDLE event
36
42
-`next-tick` — polyfill for `nextTick`/`setTimeout(0, ...)`
@@ -39,7 +45,6 @@ the project.
39
45
-`clearfix` — CSS clearfix trick
40
46
-`identify` — identify JS-objects
41
47
-`cookie` — helpers for work with browser cookies
42
-
-`vow` — Promises/A+ implementation
43
48
-`dom` — helpers for work with DOM
44
49
-`loader` — loader for JS files
45
50
-`ua` — browser features detection
@@ -58,125 +63,54 @@ The autogenerated JSDoc API can be found on bem.info. E.g. JSDoc for `i-bem` is
58
63
59
64
## Changelog
60
65
61
-
You can check the changelog at the [Changelog](https://bem.info/libs/bem-core/changelog/) page.
66
+
See [CHANGELOG.md](CHANGELOG.md).
62
67
63
68
## Migration
64
69
65
-
If you used BEM before, check the [migration instructions](https://bem.info/libs/bem-core/migration/).
70
+
If you are upgrading from v4, see [MIGRATION.md](MIGRATION.md).
0 commit comments