Combines precaches of multiple entry points of Workbox into one service worker.
Combines precaches of multiple entry points of Workbox into one service worker.
If you have an app with multiple Webpack entry points for like a Web-App and a Web-Worker, then the Workbox-Plugin with InjectManifest
will always override its generated Service-Worker files from other entry points which results in missing precache import statements. This plugin captures all precache import statements and inserts them into the generated Service-Worker file.
Load plugin
const CombineWorkboxPrecachesPlugin = require('combine-workbox-precaches-plugin');
Set amount of entry points / precaches
CombineWorkboxPrecachesPlugin.amount = 2;
For every Webpack entry besides the final one, load the Workbox-Plugin and afterwards use this plugin with the save
option and the filename of the generated file by the Workbox-Plugin.
Note: Use
tmp1.txt
or similar filenames for precaches besides the final one.
new WorkboxPlugin.InjectManifest({
swSrc: './src/service-worker/service-worker.js',
swDest: 'tmp1.txt',
include: [/\.wasm$/, /\.html$/, /\.js$/, /\.ico$/, /\.png$/, /\.jpeg$/, /\.json$/]
}),
new CombineWorkboxPrecachesPlugin('save', 'tmp1.txt'),
On the final entry use this plugin with the option combine
Note: If you use
null
for the filename,service-worker.js
will be used as default.
new WorkboxPlugin.InjectManifest({
swSrc: './src/service-worker/service-worker.js',
include: [/\.wasm$/, /\.html$/, /\.js$/, /\.ico$/, /\.png$/, /\.jpeg$/, /\.json$/]
}),
new CombineWorkboxPrecachesPlugin('combine', null),
This section assumes that you use Chrome / Chromium for debugging.
When using the plugin with the Webpack-Dev-Server for debugging purposes it is important that you use the following options for the Service-Worker.
This is an unofficial plugin for Workbox. The plugin is not affiliated with the Workbox team or Google.
MIT
GitHub kurbaniec ·
Mail at.kacper.urbaniec@gmail.com