astro-sw/README.md

1.3 KiB

>>> TL;DR: Simple Astro integration to use your own authored service-worker; by default, devs retain full control as opposed to getting generated sw code

Astro SW

The integration serviceWorker accepts configuration with service worker path and automatically injects needed dynamic variables such as assets generated by Astro for caching

Usage

Example astro.config.mjs

import { defineConfig } from "astro/config";
import node from "@astrojs/node";
import serviceWorker from "@ayco/astro-sw";

export default defineConfig({
  output: "server",
  adapter: node({
    mode: "middleware"
  }),
  integrations: [
    serviceWorker({
      path: "./src/sw.js",
      assetCachePrefix: 'cozy-reader',
    })
  ]
});

API

The integration accepts a configuration object of type ServiceWorkerConfig with the following properties

property type required? notes
path string required path to your own service worker script; no surprises & easy debugging
assetCachePrefix string optional cache storage name prefix; useful for debugging & invalidation
assetCacheVersionID string optional cache storage name versioning; by default, a random UUID is used but you can provide your own for easy debugging