Подключаю для сайта Firebase Messaging и нужно создать файл /firebase-messaging-sw.js
Я, конечно, могу использовать importScripts, дублировать конфиг firebase и так далее, но хочется сделать все более "по уму".
Использовать тайпскрипт, импортировать конфиг firebase из файла настроек, импортировать сам модуль firebase чтобы не грузить его повторно и так далее.
Не имею большого опыта с webpack, поэтому, возможно, ларчик просто открывается, но сутки гугления ни к чему не привели.
Я создаю entry для firebase-messaging-sw.js, добавляю его в excludeChunks для HtmlWebpackPlugin и переопределяю output.filename чтобы для firebase-messaging-sw.js файл генерился в корневой директории и без хэша.
Все что выше отрабатывает как надо, файл собирается, но вот сам файл не работает. :) сonsole.log, которые я вставил туда для отладки, не вызываются.
Если я добавляю вызов firebase-messaging-sw.js в index.html, то все работает (кроме функционала service worker'a, естественно), Дебаг привел меня к тому, что в случае с index.html, фукнционал этого файла вызывается из chunk-vendors.[hash].js, который был загружен ранее. В случае с service worker, этот файл, очевидно не грузится (так как грузится только firebase-messaging-sw.js) и поэтому ничего не работает.
Есть ли какой-то способ сказать вебпаку, что firebase-messaging-sw.js должен содержать в себе все что нужно для запуска? При этом для app.js (основной entry) оставить все как было?
Разобрался. Проблема была в плагине split-chunks.
Выключил его и все стало как нужно. (ну, не совсем выключил, а настроил так чтобы только для firebase-messaging-sw.js. не создавались чанки)