Files
2026-07-31 22:26:56 +03:00

6.9 KiB
Raw Permalink Blame History

Апрель 2027 — редакторское ревью после переписывания

Объём партии

  • editorial-2027-04-practice-build-evolution — 5 508 знаков основного текста;
  • editorial-2027-04-mechanism-build-evolution — 5 074 знака;
  • editorial-2027-04-field-build-evolution — 5 488 знаков.

Stable slugs сохранены. Три статьи разбирают разные вопросы frontend-сборки: сравнимость замеров, ключ cache и поиск источника роста bundle.

Проход 1 — факты, техника, пример и источники

  • Practice. До: сравнение сборок сводилось к «новый инструмент быстрее». После: compareBuildRuns() сначала проверяет inputFingerprint, затем считает delta времени и размера. Причина: пример не выдаёт разные входы за один benchmark.
  • Mechanism. До: cache описывался как общий ускоритель. После: makeDependencyCacheKey() включает lockfile, config, runtime и source digest и показывает invalidation при изменении lockfile. Причина: cache получил явный контракт входов.
  • Field. До: рост bundle предлагалось оценивать по размеру одного файла. После: summarizeBundleDiff() сравнивает esbuild-подобные inputs, сортирует delta bytes и ведёт к chunk/source map/network. Причина: код показывает конкретный путь от симптома к модулю.

Источники проверены HTTP 200 и применены с границами:

  • webpack Caching Guide — webpack 5 guide, проверен 31 July 2026; contenthash/deterministic ids и условия воспроизводимого output; не даёт данных конкретного проекта.
  • webpack cache configuration — webpack 5 reference, проверен 31 July 2026; memory/filesystem cache; не знает состояние конкретного CI.
  • esbuild Metafile — API documentation, проверена 31 July 2026; JSON inputs/outputs/bytes; не измеряет браузерную доставку.
  • Vite dependency pre-bundling — официальное руководство, проверено 31 July 2026; lockfile, config, environment и linked dependency invalidation; относится к Vite optimizer.
  • MDN SourceMap header — MDN Web Docs, page modified 21 November 2025; связь DevTools с картой; не подтверждает доступность карты и скорость ресурса.

Проход 2 — структура, голос, плотность и мета-лексика

  • Practice. До: первым шёл секундомер. После: первые два абзаца называют разные input/config/cache/output и цену ложного сравнения, а секундомер появляется после условий. Причина: действие поставлено после постановки проблемы.
  • Mechanism. До: cache hit звучал как доказательство корректного результата. После: отдельные разделы разводят key, invalidation, hit/miss и проверку содержимого output. Причина: техническая речь называет, что именно повторяется.
  • Field. До: «bundle вырос» сразу вёл к удалению библиотеки. После: текст проходит metafile diff, input, chunk, source map и browser measurement. Причина: каждый шаг сужает место причины и не смешивает bytes с latency.

Запрещённая мета-лексика в body не найдена. В каждой статье есть конкретный reader-facing симптом, стоимость ошибки, объяснение механизма, runnable example, ordered steps, ограничения и следующий шаг. Общих 12-словных фрагментов с январём–мартом нет.

Проход 3 — визуал, мобильная читаемость, доступность и повторы

  • Practice. До: timeline показывал редакционную передачу конфигураций. После: SVG показывает input → config → cache → замер → output diff и красную ветку другого fingerprint. Причина: рисунок объясняет условие сравнимости.
  • Mechanism. До: матрица содержала synthetic shape и статусы отсутствующих данных. После: строки описывают input, config, cache, runner и output; нижняя ветка останавливает несопоставимый замер. Причина: визуал служит cache/benchmark механизму.
  • Field. До: схема показывала hand-off. После: она сравнивает два metafile, считает delta, ведёт к chunk/map/network и возвращает при несовпадении input. Причина: диаграмма соответствует summarizeBundleDiff().

SVG получили русские title/desc, доступные alt/caption и компактные подписи. Sharp 375 px проверил таблицу, стрелки, красные ветки и отсутствие обрезки. Опасные SVG-элементы и внешние ресурсы отсутствуют.

Проверки

node --check scripts/upgrade-2027-04.mjs — PASS
node scripts/upgrade-2027-04.mjs --verify-fixture — PASS, 4/4
npm run audit:draft -- scripts/upgrade-2027-04.mjs — PASS, 3/3
локальные build/cache/bundle examples — PASS, 12/12 для всей партии
xmllint --noout для 3 SVG — PASS
SVG safety scan — PASS
Sharp resize width=375 для 3 SVG — PASS; визуально проверены timeline, matrix и bundle loop
strict cross-article scan января–апреля: 12 статей, 66 сравнений, sources excluded, code included — collisions: []

Git, registry, README, articles.json, приложение и файлы других месяцев не изменялись.