@vite-pwa/create-pwa
Version:
PWA Templates
40 lines (33 loc) • 972 B
text/typescript
/// <reference lib="WebWorker" />
import { cleanupOutdatedCaches, createHandlerBoundToURL, precacheAndRoute } from 'workbox-precaching'
import { clientsClaim } from 'workbox-core'
import { NavigationRoute, registerRoute } from 'workbox-routing'
declare let self: ServiceWorkerGlobalScope
// self.__WB_MANIFEST is the default injection point
precacheAndRoute(
self.__WB_MANIFEST,
{
urlManipulation: ({ url }) => {
const urls: URL[] = []
if (url.pathname.endsWith('_payload.json')) {
const newUrl = new URL(url.href)
newUrl.search = ''
urls.push(newUrl)
}
return urls
}
}
)
// clean old assets
cleanupOutdatedCaches()
let allowlist: RegExp[] | undefined
// in dev mode, we disable precaching to avoid caching issues
if (import.meta.dev)
allowlist = [/^\/$/]
// to allow work offline
registerRoute(new NavigationRoute(
createHandlerBoundToURL('/'),
{ allowlist },
))
self.skipWaiting()
clientsClaim()