@vernikr/size-report 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -18,6 +18,37 @@
18
18
  где за основу взяты `fixtures/synthetic/config.json`, метрики — `raw`, `min`, `tok`, а
19
19
  способ минификации — `strip` или `esbuild`.
20
20
 
21
+ ## 2.0.1 — 2026-09-15
22
+
23
+ Место отчёта в свежем проекте: `docs/size-report.html`, и каталог создаётся сам.
24
+
25
+ - **Отчёт больше не ложится в корень.** Первая редакция вывода выбирала «рядом с
26
+ доками, если каталог `docs` есть, иначе в корне»: в проекте, который только что
27
+ поставил пакет, каталога ещё нет — и отчёт оказывался там, где его не ищут (замер:
28
+ свежий клон, установка из реестра, `docs/` не появился, файл лёг в корень). Теперь
29
+ адрес один: `docs/size-report.html`; каталог — часть адреса, а создаёт его тот, кто
30
+ пишет файл. Имя из настроек по-прежнему перебивает вывод.
31
+ - Стережёт это проверка: проект без настроек и без каталога `docs` — отчёт в `docs/`,
32
+ в корне его нет, контрольный режим зелёный.
33
+
34
+ ### Что изменится в числах
35
+
36
+ **Ничего.** Правка — про путь файла, а не про измерение. Таблица та же, что у 2.0.0.
37
+
38
+ | Файл | raw | min со strip | min с esbuild | tok |
39
+ |---|---|---|---|---|
40
+ | code.js | 735 | 276 | 185 | 168 |
41
+ | modern.js | 246 | 51 | 45 | 44 |
42
+ | config.mjs | 172 | 45 | 40 | 40 |
43
+ | заметки.md | 306 | 303 | 303 | 53 |
44
+ | crlf.txt | 63 | 60 | 60 | 10 |
45
+ | package.json | 87 | 69 | 69 | 34 |
46
+ | style.css | 156 | 55 | 43 | 38 |
47
+ | table.toml | 300 | 299 | 299 | 52 |
48
+ | empty.js | 0 | 0 | 0 | 0 |
49
+ | WORKLOG.md | 446 | 439 | 439 | 101 |
50
+ | **ИТОГО** | **2511** | **1597** | **1483** | **540** |
51
+
21
52
  ## 2.0.0 — 2026-09-15
22
53
 
23
54
  Один отчёт вместо двух, и он же появляется сам: форма отчёта сведена к одному
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ## Статус
12
12
 
13
- **Выпуск 2.0.0 (2026-09-15).** Инструмент живёт отдельным пакетом: имя в
13
+ **Выпуск 2.0.1 (2026-09-15).** Инструмент живёт отдельным пакетом: имя в
14
14
  реестре — `@vernikr/size-report` (публикуется тегом из CI, без секрета). Настроек
15
15
  проект может не заводить вовсе: без файла инструмент выводит их из самого проекта и
16
16
  говорит об этом строкой, а `--init` закрепляет выведенное файлом (чем этот шаг
@@ -219,10 +219,10 @@
219
219
 
220
220
  | Прогон | Команда | Проверок |
221
221
  |---|---|---|
222
- | Быстрый — каждая правка | `pnpm test` | **65 из 168** |
223
- | Полный — выкладка и CI | `pnpm test:all` | **168** |
222
+ | Быстрый — каждая правка | `pnpm test` | **65 из 169** |
223
+ | Полный — выкладка и CI | `pnpm test:all` | **169** |
224
224
 
225
- Ни одна проверка не потеряна и не ослаблена: полный прогон запускает все 168 теми же
225
+ Ни одна проверка не потеряна и не ослаблена: полный прогон запускает все 169 теми же
226
226
  файлами, а быстрый берёт их часть. Умолчание — полный: файл становится быстрым только
227
227
  явно и с причиной, поэтому новое дорогое не может тихо уехать в быстрый. Стерегут это
228
228
  объявление `test/suites.test.js` (полнота классификации и причина у каждого файла) и
@@ -480,6 +480,7 @@ deльт задан один раз и по артефакту: рост зел
480
480
  | `PLAN.md` | **Главный документ:** инвентаризация, границы, инварианты, архитектура, семь шагов переноса, приёмка, риски, открытые вопросы |
481
481
  | `docs/requirements.md` | Требования заказчика: что и зачем |
482
482
  | `docs/module-design.md` | Архитектурный проект выноса: как устроен модуль |
483
+ | `docs/size-report.html` | Отчёт об объёме этого самого проекта: один самодостаточный файл, который обновляет хук после каждого коммита (отдельным коммитом) |
483
484
  | `WORKLOG.md` | Журнал запросов и сделанного |
484
485
  | `BLOCKERS.md` | Открытые блокеры и известные пробелы (обход обязан держаться проверкой) |
485
486
  | `REFACTOR.md` | Поканальный план чистки: объём кода, потом скорость; границы и чем доказывается, что поведение не изменилось |
@@ -642,7 +643,7 @@ pnpm add -D @vernikr/size-report
642
643
  ```
643
644
 
644
645
  Пакет **опубликован в реестре**, и публично: `npm view @vernikr/size-report
645
- version` отвечает `2.0.0`, `npm access get status @vernikr/size-report` — `public`,
646
+ version` отвечает `2.0.1`, `npm access get status @vernikr/size-report` — `public`,
646
647
  а анонимный запрос тарболла — код 200. `npm i -D` и `yarn add -D` принимают то же
647
648
  имя; ни ключа, ни ссылки на репозиторий не нужно.
648
649
 
@@ -650,11 +651,11 @@ version` отвечает `2.0.0`, `npm access get status @vernikr/size-report`
650
651
  реестра, но остаётся привязанной к ревизии:
651
652
 
652
653
  ```bash
653
- pnpm add -D github:vernikr/size-report#v2.0.0
654
+ pnpm add -D github:vernikr/size-report#v2.0.1
654
655
  ```
655
656
 
656
657
  Без сети (или если тянуть из codeload нечем) — тарболл: `pnpm pack` в клоне
657
- пакета, затем `pnpm add -D ./vernikr-size-report-2.0.0.tgz`.
658
+ пакета, затем `pnpm add -D ./vernikr-size-report-2.0.1.tgz`.
658
659
 
659
660
  **Почему тег, а не sha.** Короткий sha pnpm разрешает только через видимые рефы, а
660
661
  `git ls-remote` отдаёт одни верхушки веток: пока ревизия — верхушка, короткий sha
@@ -662,7 +663,7 @@ pnpm add -D github:vernikr/size-report#v2.0.0
662
663
  <sha> to a commit`. Это не рассуждение, а проба: короткий пин `6530237` ставился,
663
664
  пока `main` стоял на нём, и перестал — на следующем же коммите, а тот же sha
664
665
  целиком поставился. Имя ветки (`#main`) или тег принимаются оба, но ветка —
665
- движущаяся цель, а тег постоянен: этот выпуск стоит на теге `v2.0.0`, он же и в
666
+ движущаяся цель, а тег постоянен: этот выпуск стоит на теге `v2.0.1`, он же и в
666
667
  примере (сорок знаков тоже годятся, но их придётся брать глазами из истории).
667
668
 
668
669
  Ревизия в примере — не украшение, а часть утверждения: она закреплена за тем, что
@@ -736,7 +737,7 @@ stderr и называет команду, которая их закрепля
736
737
  | `metrics` | из чего состоит число: `raw` (размер объекта git), `min` (минифицированная форма — какая именно, решает `minify.engine`), `tok` (токены), `gzip` |
737
738
  | `tokens.family`, `tokens.encoding` | словарь для `tok`: семейство (`openai`) и кодировка (`o200k_base` или `cl100k_base`) — кодировка меняет число, поэтому она и в настройках, и в подписи метрики |
738
739
  | `minify.engine` | чем считается `min`: `strip` (комментарии и отступы, точность не обещается) или `esbuild` (настоящее сжатие; форматы без минификатора — упрощение, и это видно в подписи метрики) |
739
- | `output` | файл отчёта (в выведенном профиле — `docs/size-report.html`, если каталог `docs/` есть, иначе в корне; имя отчёта — его имя, а каталог решает только где ему лежать) |
740
+ | `output` | файл отчёта (в выведенном профиле — `docs/size-report.html`; каталог создаётся сам, имя отчёта — его имя) |
740
741
  | `journal` | где искать разделы журнала, на которые ссылаются строки |
741
742
  | `links.commitUrl` | шаблон ссылки на коммит, например `https://github.com/org/repo/commit/{sha}`; выводится из адреса `origin` у GitHub и GitLab (у остальных хозяев — пусто, а не догадка) |
742
743
  | `skip` | пути, которые колонкой не стали: и те, что ею быть не могут (сам отчёт, замки зависимостей), и те, что в колонки не поместились (выведенный профиль объявляет исключениями всё остальное — поэтому первый `check` полон) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vernikr/size-report",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "author": "vernikr",
5
5
  "repository": {
6
6
  "type": "git",
@@ -66,7 +66,7 @@
66
66
  "report"
67
67
  ],
68
68
  "devDependencies": {
69
- "@vernikr/size-report": "1.3.1",
69
+ "@vernikr/size-report": "2.0.0",
70
70
  "c8": "10",
71
71
  "dependency-cruiser": "17",
72
72
  "eslint": "^9.18.0",
package/src/project.js CHANGED
@@ -97,11 +97,14 @@ function exists(root, p) {
97
97
  return fs.existsSync(path.join(root, p));
98
98
  }
99
99
 
100
- /* Имя отчёта — одно на пакет и на проект: файл это и есть страница отчёта, и
101
- * называться иначе она не может. Каталог решает только, где ей лежать: рядом с
102
- * доками, если они в проекте есть, иначе в корне. */
103
- function outputOf(root) {
104
- return (exists(root, 'docs') ? 'docs/' : '') + 'size-report.html';
100
+ /* Куда ложится отчёт — одно на пакет: `docs/size-report.html`, и каталог создаётся
101
+ * сам. Прежняя развилка («в доки, если они есть, иначе в корень») убрана по замеру:
102
+ * в свежем проекте каталога `docs` ещё нет, и отчёт оказывался в корне — то есть
103
+ * ни в том месте, где его ищут, ни в том, куда его хочет положить человек,
104
+ * который ставит пакет ради отчёта. Каталог здесь не признак проекта, а часть
105
+ * адреса; создавать его — работа того, кто пишет файл (`writeFileEnsured`). */
106
+ function outputOf() {
107
+ return 'docs/size-report.html';
105
108
  }
106
109
 
107
110
  /* Менеджер пакетов — по lock-файлу, а не догадкой: команда обязана существовать