diff --git a/src/assets/options.ts b/src/assets/options.ts index 37fdc59..ada7280 100644 --- a/src/assets/options.ts +++ b/src/assets/options.ts @@ -30,5 +30,6 @@ export function resolveOptions(ctx: QwikPWAContext) { includeHtmlHeadLinks, includeThemeColor, includeWebManifest, + excludeRoutes: [], }; } diff --git a/src/plugins/client.ts b/src/plugins/client.ts index 4bae94e..e13d62e 100644 --- a/src/plugins/client.ts +++ b/src/plugins/client.ts @@ -22,6 +22,7 @@ export default function ClientPlugin(ctx: QwikPWAContext): Plugin { const assets = await ctx.assets; const generatedAssetsUrls = assets?.resolveSWPrecachingAssets() ?? []; const routes = ctx.qwikCityPlugin.api.getRoutes(); + const excludeRoutes = ctx.userOptions.excludeRoutes ?? []; const swCode = await fs.readFile(ctx.swClientDistPath, "utf-8"); const swCodeUpdate = ` const excludeAssets = ['_headers', '_redirects'] @@ -32,6 +33,7 @@ export default function ClientPlugin(ctx: QwikPWAContext): Plugin { ...emittedAssets, ])}; const routes = [${routes + .filter((route) => !excludeRoutes.includes(route.pathname)) .map( (route) => `{ pathname: ${JSON.stringify( @@ -41,7 +43,7 @@ export default function ClientPlugin(ctx: QwikPWAContext): Plugin { }`, ) .join(",\n")}]; - + ${swCode} `; await fs.writeFile(ctx.swClientDistPath, swCodeUpdate); diff --git a/src/plugins/ssr.ts b/src/plugins/ssr.ts index 4b3695c..db0420d 100644 --- a/src/plugins/ssr.ts +++ b/src/plugins/ssr.ts @@ -17,7 +17,7 @@ export default function SSRPlugin(ctx: QwikPWAContext): Plugin { const manifest = ctx.qwikPlugin.api.getManifest(); const swCodeUpdate = ` const manifestHash = ${JSON.stringify(manifest?.manifestHash)}; - + ${swCode} `; await fs.writeFile(ctx.swClientDistPath, swCodeUpdate); diff --git a/src/sw.ts b/src/sw.ts index df58ea1..fc951d3 100644 --- a/src/sw.ts +++ b/src/sw.ts @@ -12,7 +12,9 @@ import { setDefaultHandler, } from "workbox-routing"; -export const assets = [...publicDirAssets, ...emittedAssets].filter((asset) => !excludeAssets.includes(asset)); +export const assets = [...publicDirAssets, ...emittedAssets].filter( + (asset) => !excludeAssets.includes(asset), +); export { routes }; function urlsToEntries(urls: string[], hash: string): PrecacheEntry[] { diff --git a/src/types.ts b/src/types.ts index 0e0997a..3a01b75 100644 --- a/src/types.ts +++ b/src/types.ts @@ -92,4 +92,8 @@ export interface PWAOptions { * @default false */ includeWebManifest?: boolean; + /** + * The route pathnames should be excluded. + */ + excludeRoutes?: string[]; }