2.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 accepts service worker path and automatically injects dynamic variables such as __assets
generated by Astro for caching.
The main philosophy is to invert the control compared to other integrations that generate the service worker for devs. The service worker API is such a powerful feature that developers need to be able to make decisions in using it.
Installation
In your Astro project:
# if using npm
$ npm i -D @ayco/astro-sw
# if using pnpm
$ pnpm add -D @ayco/astro-sw
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 |
assetCacheVersionID | string | optional | cache storage name versioning; by default, a random UUID is used but you can provide your own for easy debugging & invalidation |
Example sw.js
You can find an example service worker (example_sw.js
) in the repository, and here's the raw file too.