No description
Find a file
2024-08-16 18:25:40 +02:00
public chore: add public image 2024-08-15 18:46:00 +02:00
src feat: add excludeRoutes option 2024-08-16 13:17:18 +02:00
.gitignore initial commit 2024-08-03 08:55:17 +02:00
astro.config.mjs feat: add excludeRoutes option 2024-08-16 13:17:18 +02:00
example_sw.js chore: update comment in example sw 2024-08-03 10:31:50 +02:00
index.js feat: use astro integration logger 2024-08-16 14:16:21 +02:00
package.json 0.6.2 2024-08-16 14:16:27 +02:00
pnpm-lock.yaml feat: use unjs/pathe & extract public files for caching 2024-08-15 21:09:45 +02:00
README.md chore: update README.md 2024-08-16 18:25:40 +02:00

Astro SW

Package information: NPM version Package information: NPM license Bundle Size

The integration accepts path to your own authored service worker and automatically injects dynamic variables such as __assets generated by Astro for caching. The goal is to invert the control (i.e., compared to generating the service worker script code), and let devs retain the flexibility for various caching strategies.

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 serviceWorker from "@ayco/astro-sw";

export default defineConfig({
  integrations: [
    serviceWorker({
      path: "./src/sw.js",
    })
  ]
});

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
customRoutes string[] optional list of custom routes you want to be cached. Beware that non-existent routes that result to HTTP Error404 will cause the service worker to fail
excludeRoutes string[] optional list of routes you want to be ignored/removed from assets

Example sw.js

You can find an example service worker (example_sw.js) in the repository, and here's the raw file too.