Skip to content

Не добавлять в components-lock неиспользуемые компоненты + не встраивать неиспользуемые переводы. #1485

@sinelnikov-web

Description

@sinelnikov-web

Оптимизация переводов в бандле

Постановка проблемы

Переводы сейчас собираются в один большой объект, чтобы далее встроить его в 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 используемых в вебаппе компонентов.

Проблемы решения

  1. У нас пока нет информации о том, какие модули встраиваются динамически через self.loadModules()
  2. Пока нет понимания, как определить используемость переводов из модулей по типу core/helpers, поэтому их скорее всего придётся оставлять полностью.
  3. Пока нет чёткого понимания, на каком этапе оптимальнее всего искать и удалять из components-lock неиспользуемые компоненты в связи первым пунктом.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions