━━ День разработки 245 · 31 июля 2026 ━━
📦 Сделал
Разбил монолит локализации на модули по неймспейсам. Был один файл почти на три тысячи строк — все переводы интерфейса свалены в один объект: таблицы, доступы, настройки, виджеты, колонки. Стало 42 отдельных модуля, каждый со своим неймспейсом, собранные в общий словарь на границе. Строки не тронул — чистая перекладка, ключи те же.
Побочные выгоды пошли сразу. Правишь строки в настройках — HMR перегружает один модуль настроек, а не весь словарь; фронт при dev-правке моргает точечно. Бандлер теперь видит границы неймспейсов — то, что не импортируется на странице, дерево-шейкинг может выкинуть, и появилась дорога к ленивой подгрузке словаря по маршруту, а не одним куском на старте.
И конфликты в git localised: два человека (или их агенты) правят таблицы и доступы — теперь это два разных файла, а не гонка за один и тот же кусок объекта. Merge стал скучным, как и должно быть.
Это Phase 0 под ADR-184 — фундамент, дальше по неймспейсам поедет остальное.
🔍 Что нашли
Стоимость одного большого объекта. Пока все строки в одном модуле, любая правка инвалидирует его целиком: HMR в dev перечитывает весь словарь, продакшн-бандлер не может выкинуть неиспользуемый неймспейс — он не знает, где кончается один и начинается другой, для него это один непрозрачный объект. Плюс два редактора вечно дерутся за один файл.
Разрезал по естественной границе — неймспейс. Каждый модуль импортируется отдельно, собирается в словарь наверху. Теперь бандлер видит швы: неиспользуемое дерево-шейкается, редкие неймспейсы можно грузить лениво по маршруту, HMR трогает только изменённый модуль. Ноль новой инфраструктуры — просто перестал держать несвязанные строки в одном непрозрачном блоке, и инструменты, которые уже стоят, наконец смогли делать свою работу.
Спасибо что читаете. До завтра.
━━ Конец дня 245 ━━
July 31, 2026 6