По умолчанию 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. Как это сделать?