Как сконфигурировать webpack для данной задачи?

По умолчанию Webpack (речь о v. 5.22.0) помещает билд в анонимную функцию. Мне же нужно сделать билд в виде плагина, который можно было бы подключить в html-файле и инициализировать таким образом:

<script src="widget.js"></script> // Подключение плагина
<script>
	new Widget().init() // Инициализация
</script>


Не совсем понимаю, как это сделать. В документации пишут, что нужно указать в output значение library. Сделал вот так

module.exports = {
  ...
  entry: './app.js',
  output: {
    library: 'Widget',
    filename: 'widget.js',
    path: PATH.resolve(__dirname, 'dist')
  }
}


Однако этого не вполне достаточно, т.к. в консоли ошибка "WIdget is not a constructor". Что и неудивительно, т.к. Widget становится модулем с методом default, который уже можно вызывать. То есть вот такая конструкция сработает:

new Widget.default().init()

Однако сработает только в билд-версии, но не в dev. И в любом случае хочется убрать этот излишний default, чтобы вот так можно было вызывать:

new Widget().init()

В файле app.js экспортируется сам класс Widget:

export default class Widget {
  constructor() {...}
  init() {...}
}


Собственно говоря, только и требуется вызвать этот самый метод init у класса Widget, без всяких промежуточных default. Как это сделать?
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
см здесь готовый конфиг плагина https://github.com/delphinpro/cool-menu/blob/maste...
Ответ написан
Ваш ответ на вопрос

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

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