@Fly3110
web developer

Как с помощью webpack собрать service worker?

Подключаю для сайта 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) оставить все как было?

Спасибо.
  • Вопрос задан
  • 26 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Fly3110 Автор вопроса
web developer
Разобрался. Проблема была в плагине split-chunks.
Выключил его и все стало как нужно. (ну, не совсем выключил, а настроил так чтобы только для firebase-messaging-sw.js. не создавались чанки)
Ответ написан
Ваш ответ на вопрос

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

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