6.9 KiB
6.9 KiB
Апрель 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, приложение и файлы других месяцев не изменялись.