-
Notifications
You must be signed in to change notification settings - Fork 14
Description
Оптимизация переводов в бандле
Постановка проблемы
Переводы сейчас собираются в один большой объект, чтобы далее встроить его в html.
Сборка переводов происходит тут
Сейчас нет никакой оглядки на то, используются ли у нас в конкретном вебаппе какие-то компоненты и их переводы или нет и собираются все переводы какие можем найти.
Как хотели бы решать проблему с переводами?
Для того, чтобы не встраивать лишние переводы, нам нужно смотреть на то, какие компоненты используются в вебаппе и добавлять только переводы к ним.
Почти всю информацию можно извлекать из построенного components-lock или же из результата вызова функции buildProjectGraph(), но с этим есть некоторые проблемы.
Проблемы components-lock
Допустим у нас есть следующие проекты и наборы "слоёв"
@edadeal/foo-webapp -> @edadeal/core -> @v4fire/client -> @v4fire/core
@edadeal/bar-webapp -> @edadeal/core -> @v4fire/client -> @v4fire/core
Сейчас, при сборке конечного вебаппа(например @edadeal/foo-webapp), в components-lock, попадают компоненты со всех слоёв, в том числе, которые в нашем конечном вебаппе могут вовсе не использоваться.
В примере выше, "проблемными" являются по сути все общие слои между foo-webapp и bar-webapp, т.к. в components-lock обоих вебаппов, попадут все компоненты из общих слоёв.
Решение
Вероятно, мы бы хотели удалять из components-lock все компоненты, со слоёв ниже, которые, не фигурируют в dependencies используемых в вебаппе компонентов.
Проблемы решения
- У нас пока нет информации о том, какие модули встраиваются динамически через
self.loadModules() - Пока нет понимания, как определить используемость переводов из модулей по типу
core/helpers, поэтому их скорее всего придётся оставлять полностью. - Пока нет чёткого понимания, на каком этапе оптимальнее всего искать и удалять из components-lock неиспользуемые компоненты в связи первым пунктом.