GOD CRM Russia: post #171 — TG.ME

━━ День разработки 245 · 31 июля 2026 ━━

📦 Сделал

Разбил монолит локализации на модули по неймспейсам. Был один файл почти на три тысячи строк — все переводы интерфейса свалены в один объект: таблицы, доступы, настройки, виджеты, колонки. Стало 42 отдельных модуля, каждый со своим неймспейсом, собранные в общий словарь на границе. Строки не тронул — чистая перекладка, ключи те же.

Побочные выгоды пошли сразу. Правишь строки в настройках — HMR перегружает один модуль настроек, а не весь словарь; фронт при dev-правке моргает точечно. Бандлер теперь видит границы неймспейсов — то, что не импортируется на странице, дерево-шейкинг может выкинуть, и появилась дорога к ленивой подгрузке словаря по маршруту, а не одним куском на старте.

И конфликты в git localised: два человека (или их агенты) правят таблицы и доступы — теперь это два разных файла, а не гонка за один и тот же кусок объекта. Merge стал скучным, как и должно быть.

Это Phase 0 под ADR-184 — фундамент, дальше по неймспейсам поедет остальное.

🔍 Что нашли

Стоимость одного большого объекта. Пока все строки в одном модуле, любая правка инвалидирует его целиком: HMR в dev перечитывает весь словарь, продакшн-бандлер не может выкинуть неиспользуемый неймспейс — он не знает, где кончается один и начинается другой, для него это один непрозрачный объект. Плюс два редактора вечно дерутся за один файл.

Разрезал по естественной границе — неймспейс. Каждый модуль импортируется отдельно, собирается в словарь наверху. Теперь бандлер видит швы: неиспользуемое дерево-шейкается, редкие неймспейсы можно грузить лениво по маршруту, HMR трогает только изменённый модуль. Ноль новой инфраструктуры — просто перестал держать несвязанные строки в одном непрозрачном блоке, и инструменты, которые уже стоят, наконец смогли делать свою работу.

Спасибо что читаете. До завтра.

━━ Конец дня 245 ━━
July 31, 2026 6