Как добавлять в Webpack сборку кастомный код на лету?

В Webpack есть замечательный LazyLoading, который позволяет разбирать модули на небольшие файлы и подгружать их на лету. Например при клике на кнопку корзины, подгружается функционал корзины. Я сейчас пишу систему которая поддерживает систему плагинов. То есть в админке можно добавить произвольный JS код, который в итоге должен отрабатывать в определенных разделах системы. Проблема в том что делать сборку Webpack, каждый раз когда кто-то добавляет код - не получится, да и не правильно это. Можно все поломать, да и сборка спустя n время будет содержать большое кол-во мусора. Вторая проблема это область видимости. Нужно чтобы в файле "плагина" были так же доступы некоторые объекты которые находятся внутри Вебпаковской фун-ции. Есть идеи как такую подгрузку реализовать в данной ситуации?
  • Вопрос задан
  • 266 просмотров
Пригласить эксперта
Ответы на вопрос 1
mr_T
@mr_T
Web-разработчик
Если не давать сторонним разработчикам вклиниваться в процесс сборки и вообще не давать возможность пересобирать проект, то силами webpack такое вряд ли можно провернуть. В webpack модули должны быть предсказуемыми на момент сборки и, насколько я знаю, динамически их загружать из внешних источников не выйдет.
Можно либо всё-таки пересобирать проект при добавлении сторонних плагинов и просто подгружать все плагины из определённых папок (с помощью require.context), либо писать собственный динамический загрузчик.
Передача зависимостей плагинам - вообще не проблема при любом из подходов. Просто каждый плагин должен иметь какую-то функцию инициализации, в которую вы можете передать нужные зависимости в качестве аргументов. При желании можно даже какой-нибудь DI замутить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы