Webpack: Как сделать API "расширений" с пакетами, передаваемыми после этого? - PullRequest
0 голосов
/ 28 сентября 2019

Мы создаем реализацию панели мониторинга.Мы хотим использовать Webpack для создания основного кода панели мониторинга и набора стандартных реализаций виджетов и хотим, чтобы другие могли создавать свои собственные реализации виджетов, которые реализуют «API виджета панели мониторинга» и интегрируются с панелью мониторинга.

В среде Webpack, как мы можем позволить авторам расширений использовать преимущества import, уже присутствующие в ядре , не требуя, чтобы все расширения были доступны при сборке ядра ?

Если я думаю о пакетных файлах как о .so общих библиотеках, как мне создать javascript-эквивалент .so файлов, которые позволяют авторам расширений «связываться» с ними, чтобы создавать расширения, использующие зависимости и API в «* 1010»?* "?

В нашей старой реализации панели мониторинга RequireJS, которую он заменяет, каждый виджет был require d, и они, в свою очередь, загружали свои собственные требования.Работал отлично.Это позволило:

  • Базовая сборка, которая предоставляет несколько API-интерфейсов, доступных как для ядра, так и для расширений через RequireJS require.
  • Требования, такие как lodash, были загружены только один раз и предоставлены для совместного использования.между ядром и расширениями.
  • Расширения могут быть написаны и протестированы независимо от ядра .
    • Может быть записано после того, как ядро ​​установлено на сервере
    • Обновление ядра вообще не требует изменения расширений, пока API остается стабильным.

Теперь, когда мы используем Webpack, как это можно сделать?

Конечно, мы могли бы просто определить API и позволить каждому расширению запускать Webpack самостоятельно, а затем использоватьТребовать JS, чтобы загрузить их.Попробовал это.Но теперь зависимости не являются общими.Загрузка BootstrapVue и Vue и больше ничего не дает - 427 КБ.Умноженный на 20 типов виджетов, это не идеально ...

...