提交 239524c2 编写于 作者: View Design's avatar View Design

a

上级 e8be2f3d
<template> <template>
<NuxtPwaManifest />
<NuxtLayout name="default"> <NuxtLayout name="default">
<NuxtPage /> <NuxtPage />
</NuxtLayout> </NuxtLayout>
......
// https://nuxt.com/docs/api/configuration/nuxt-config // https://nuxt.com/docs/api/configuration/nuxt-config
const sw = process.env.SW === 'true'
export default defineNuxtConfig({ export default defineNuxtConfig({
devtools: { devtools: {
enabled: false enabled: false
...@@ -6,5 +7,53 @@ export default defineNuxtConfig({ ...@@ -6,5 +7,53 @@ export default defineNuxtConfig({
modules: [ modules: [
'@vite-pwa/nuxt', '@vite-pwa/nuxt',
'@nuxt/ui' '@nuxt/ui'
] ],
pwa: {
strategies: sw ? 'injectManifest' : 'generateSW',
srcDir: sw ? 'service-worker' : undefined,
filename: sw ? 'sw.ts' : undefined,
registerType: 'autoUpdate',
manifest: {
name: 'Nuxt Vite PWA',
short_name: 'NuxtVitePWA',
theme_color: '#ffffff',
icons: [
{
src: 'pwa-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'pwa-512x512.png',
sizes: '512x512',
type: 'image/png',
},
{
src: 'pwa-512x512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'any maskable',
},
],
},
workbox: {
globPatterns: ['**/*.{js,css,html,png,svg,ico}'],
},
injectManifest: {
globPatterns: ['**/*.{js,css,html,png,svg,ico}'],
},
client: {
installPrompt: true,
// you don't need to include this: only for testing purposes
// if enabling periodic sync for update use 1 hour or so (periodicSyncForUpdates: 3600)
periodicSyncForUpdates: 20,
},
devOptions: {
enabled: true,
suppressWarnings: true,
navigateFallback: '/',
navigateFallbackAllowlist: [/^\/$/],
type: 'module',
},
},
}) })
\ No newline at end of file
/// <reference lib="WebWorker" />
/// <reference types="vite/client" />
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 default injection point
precacheAndRoute(self.__WB_MANIFEST)
// clean old assets
cleanupOutdatedCaches()
let allowlist: undefined | RegExp[]
if (import.meta.env.DEV)
allowlist = [/^\/$/]
// to allow work offline
registerRoute(new NavigationRoute(
createHandlerBoundToURL('/'),
{ allowlist },
))
self.skipWaiting()
clientsClaim()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册