From ee30dcd8f3a9b3eb7a077267c7665603720d9eb1 Mon Sep 17 00:00:00 2001 From: Martti Malmi Date: Mon, 20 Nov 2023 14:22:52 +0200 Subject: [PATCH] sw works in production build --- packages/app/package.json | 3 +- packages/app/src/serviceWorkerRegistration.ts | 7 +- packages/app/vite.config.ts | 14 +- yarn.lock | 183 +++++++++++++++++- 4 files changed, 201 insertions(+), 6 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index f916a75a..96d5d8b1 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -49,7 +49,7 @@ }, "scripts": { "start": "vite", - "build": "vite build", + "build": "yarn eslint --fix && vite build", "serve": "vite preview", "test": "jest --runInBand", "intl-extract": "formatjs extract 'src/**/*.ts*' --ignore='**/*.d.ts' --out-file src/lang.json --flatten true", @@ -126,6 +126,7 @@ "ts-loader": "^9.4.4", "typescript": "^5.2.2", "vite": "^5.0.0", + "vite-plugin-pwa": "^0.17.0", "webpack": "^5.88.2", "webpack-bundle-analyzer": "^4.8.0", "webpack-cli": "^5.1.4", diff --git a/packages/app/src/serviceWorkerRegistration.ts b/packages/app/src/serviceWorkerRegistration.ts index 9364b51d..8b10641d 100644 --- a/packages/app/src/serviceWorkerRegistration.ts +++ b/packages/app/src/serviceWorkerRegistration.ts @@ -1,14 +1,15 @@ // Import the service worker with Vite's special syntax -import ServiceWorkerURL from "./service-worker?worker&url"; +//import ServiceWorkerURL from "./service-worker?worker&url"; export function register() { if ('serviceWorker' in navigator) { window.addEventListener('load', () => { - registerValidSW(ServiceWorkerURL); + //registerValidSW(ServiceWorkerURL); }); } } +/* async function registerValidSW(swUrl: string) { try { const registration = await navigator.serviceWorker.register(swUrl, @@ -33,6 +34,8 @@ async function registerValidSW(swUrl: string) { } } + */ + export async function unregister() { if ('serviceWorker' in navigator) { const registration = await navigator.serviceWorker.ready; diff --git a/packages/app/vite.config.ts b/packages/app/vite.config.ts index d209dc82..d66d49e4 100644 --- a/packages/app/vite.config.ts +++ b/packages/app/vite.config.ts @@ -1,10 +1,22 @@ import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; +import { VitePWA } from 'vite-plugin-pwa'; import appConfig from "config"; export default defineConfig({ - plugins: [react()], + plugins: [ + react(), + VitePWA({ + strategies: 'injectManifest', + srcDir: 'src', + filename: 'service-worker.ts', + devOptions: { + enabled: true, + type: 'module', + } + }) + ], assetsInclude: ['**/*.md'], resolve: { alias: { diff --git a/yarn.lock b/yarn.lock index 4ef2c7fe..d32218e3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3475,6 +3475,7 @@ __metadata: use-sync-external-store: ^1.2.0 uuid: ^9.0.0 vite: ^5.0.0 + vite-plugin-pwa: ^0.17.0 webpack: ^5.88.2 webpack-bundle-analyzer: ^4.8.0 webpack-cli: ^5.1.4 @@ -7987,7 +7988,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -13020,6 +13021,13 @@ __metadata: languageName: node linkType: hard +"pretty-bytes@npm:^6.1.1": + version: 6.1.1 + resolution: "pretty-bytes@npm:6.1.1" + checksum: 43d29d909d2d88072da2c3d72f8fd0f2d2523c516bfa640aff6e31f596ea1004b6601f4cabc50d14b2cf10e82635ebe5b7d9378f3d5bae1c0067131829421b8a + languageName: node + linkType: hard + "pretty-error@npm:^4.0.0": version: 4.0.0 resolution: "pretty-error@npm:4.0.0" @@ -15897,6 +15905,23 @@ __metadata: languageName: node linkType: hard +"vite-plugin-pwa@npm:^0.17.0": + version: 0.17.0 + resolution: "vite-plugin-pwa@npm:0.17.0" + dependencies: + debug: ^4.3.4 + fast-glob: ^3.3.2 + pretty-bytes: ^6.1.1 + workbox-build: ^7.0.0 + workbox-window: ^7.0.0 + peerDependencies: + vite: ^3.1.0 || ^4.0.0 || ^5.0.0 + workbox-build: ^7.0.0 + workbox-window: ^7.0.0 + checksum: 787444711c30103a3738f3415fd27874fadb5e72ccdbf907b93f27559872f541fffebbdc1474202e21117811582af500d01359b19121605ff976a9cb4fb3d02c + languageName: node + linkType: hard + "vite@npm:^5.0.0": version: 5.0.0 resolution: "vite@npm:5.0.0" @@ -16366,6 +16391,16 @@ __metadata: languageName: node linkType: hard +"workbox-background-sync@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-background-sync@npm:7.0.0" + dependencies: + idb: ^7.0.1 + workbox-core: 7.0.0 + checksum: 79b64416563761d36b91342d6ce2618d1c984bebcd511ce56b80098127e42c676d4831dd566a0a80a6bb52a618ad815b277ce6b310e4a5c5043e7394829d30c6 + languageName: node + linkType: hard + "workbox-broadcast-update@npm:6.6.0": version: 6.6.0 resolution: "workbox-broadcast-update@npm:6.6.0" @@ -16375,6 +16410,15 @@ __metadata: languageName: node linkType: hard +"workbox-broadcast-update@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-broadcast-update@npm:7.0.0" + dependencies: + workbox-core: 7.0.0 + checksum: eee5c09fd78b3439348c7c92013f63700f14004d46161f19b0daf0d01303c6785f0953b746258cfb2627932108631370c8fa52ec5b526177cd528ae02530370e + languageName: node + linkType: hard + "workbox-build@npm:6.6.0": version: 6.6.0 resolution: "workbox-build@npm:6.6.0" @@ -16420,6 +16464,51 @@ __metadata: languageName: node linkType: hard +"workbox-build@npm:^7.0.0": + version: 7.0.0 + resolution: "workbox-build@npm:7.0.0" + dependencies: + "@apideck/better-ajv-errors": ^0.3.1 + "@babel/core": ^7.11.1 + "@babel/preset-env": ^7.11.0 + "@babel/runtime": ^7.11.2 + "@rollup/plugin-babel": ^5.2.0 + "@rollup/plugin-node-resolve": ^11.2.1 + "@rollup/plugin-replace": ^2.4.1 + "@surma/rollup-plugin-off-main-thread": ^2.2.3 + ajv: ^8.6.0 + common-tags: ^1.8.0 + fast-json-stable-stringify: ^2.1.0 + fs-extra: ^9.0.1 + glob: ^7.1.6 + lodash: ^4.17.20 + pretty-bytes: ^5.3.0 + rollup: ^2.43.1 + rollup-plugin-terser: ^7.0.0 + source-map: ^0.8.0-beta.0 + stringify-object: ^3.3.0 + strip-comments: ^2.0.1 + tempy: ^0.6.0 + upath: ^1.2.0 + workbox-background-sync: 7.0.0 + workbox-broadcast-update: 7.0.0 + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-google-analytics: 7.0.0 + workbox-navigation-preload: 7.0.0 + workbox-precaching: 7.0.0 + workbox-range-requests: 7.0.0 + workbox-recipes: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + workbox-streams: 7.0.0 + workbox-sw: 7.0.0 + workbox-window: 7.0.0 + checksum: f230463833a8b6d1beadbfb4db5526d1b6b047ffa23abcd2afdc306510e1f3f942a74d1c59c76ee371a326bb2fe616ced05d0c53aefee5902c68a3f31faa27dc + languageName: node + linkType: hard + "workbox-cacheable-response@npm:6.6.0": version: 6.6.0 resolution: "workbox-cacheable-response@npm:6.6.0" @@ -16429,6 +16518,15 @@ __metadata: languageName: node linkType: hard +"workbox-cacheable-response@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-cacheable-response@npm:7.0.0" + dependencies: + workbox-core: 7.0.0 + checksum: c9d834b25564ee01dd4df17b1f27e61160a3b610f40c0e297a9973712878fe617e168e3b1541c7b70b0de3828cb4b62de3088424b4a2872ed5a106e7e777772f + languageName: node + linkType: hard + "workbox-core@npm:6.6.0, workbox-core@npm:^6.4.2": version: 6.6.0 resolution: "workbox-core@npm:6.6.0" @@ -16453,6 +16551,16 @@ __metadata: languageName: node linkType: hard +"workbox-expiration@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-expiration@npm:7.0.0" + dependencies: + idb: ^7.0.1 + workbox-core: 7.0.0 + checksum: 3d7cce573111bfb32f35d97ea95d5016ac42bdc0f3ab5096e5c0fd799dd466ccc3cbfdbdeab4e7158923ae3e406f2002add01e5c9369f9c3e2623e41bc04b324 + languageName: node + linkType: hard + "workbox-google-analytics@npm:6.6.0": version: 6.6.0 resolution: "workbox-google-analytics@npm:6.6.0" @@ -16465,6 +16573,18 @@ __metadata: languageName: node linkType: hard +"workbox-google-analytics@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-google-analytics@npm:7.0.0" + dependencies: + workbox-background-sync: 7.0.0 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + checksum: defb12c3f4cf924aef8c647724c32d1100042447aed20128702815eba0f6d55ba6dde6557036dc13d68c0ab0570188757136bd453823fe25f2fa541cb18b8e0c + languageName: node + linkType: hard + "workbox-navigation-preload@npm:6.6.0": version: 6.6.0 resolution: "workbox-navigation-preload@npm:6.6.0" @@ -16474,6 +16594,15 @@ __metadata: languageName: node linkType: hard +"workbox-navigation-preload@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-navigation-preload@npm:7.0.0" + dependencies: + workbox-core: 7.0.0 + checksum: 329018003ce44812d37f1e168960abe34c7ac4b8cd1c8f86da172e73919fb51ba94a63db3b4024614066bf1ea38e1a89839eafd46eed9a13015dd4cf6fcd056c + languageName: node + linkType: hard + "workbox-precaching@npm:6.6.0": version: 6.6.0 resolution: "workbox-precaching@npm:6.6.0" @@ -16485,7 +16614,7 @@ __metadata: languageName: node linkType: hard -"workbox-precaching@npm:^7.0.0": +"workbox-precaching@npm:7.0.0, workbox-precaching@npm:^7.0.0": version: 7.0.0 resolution: "workbox-precaching@npm:7.0.0" dependencies: @@ -16505,6 +16634,15 @@ __metadata: languageName: node linkType: hard +"workbox-range-requests@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-range-requests@npm:7.0.0" + dependencies: + workbox-core: 7.0.0 + checksum: 04f6d7921a8a4a024b0bf0049a592ebedcdd285a52d1b8714e0a53efc936339dac39c3a5b5b6db9a3356b9f3ed1876024403260ec426cf9dc65e3b7ba5464914 + languageName: node + linkType: hard + "workbox-recipes@npm:6.6.0": version: 6.6.0 resolution: "workbox-recipes@npm:6.6.0" @@ -16519,6 +16657,20 @@ __metadata: languageName: node linkType: hard +"workbox-recipes@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-recipes@npm:7.0.0" + dependencies: + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-precaching: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + checksum: 253d50a315855917ca6683d6a3e910ac3c6f8915a8bcc80a7f15f277db7f48dc288c0ec2d9cdc64390bdd50446e66910246f384ce19f46688db97c715b323123 + languageName: node + linkType: hard + "workbox-routing@npm:6.6.0, workbox-routing@npm:^6.4.2": version: 6.6.0 resolution: "workbox-routing@npm:6.6.0" @@ -16565,6 +16717,16 @@ __metadata: languageName: node linkType: hard +"workbox-streams@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-streams@npm:7.0.0" + dependencies: + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + checksum: e2975eb773bcf765c9cc8166936a9a2aaec2609fcddc178cbf6b2da54a113c4e2e62cbd257104861ea21b80c2a051936d62249f06d2414072405147f5181c0ef + languageName: node + linkType: hard + "workbox-sw@npm:6.6.0": version: 6.6.0 resolution: "workbox-sw@npm:6.6.0" @@ -16572,6 +16734,13 @@ __metadata: languageName: node linkType: hard +"workbox-sw@npm:7.0.0": + version: 7.0.0 + resolution: "workbox-sw@npm:7.0.0" + checksum: f2673bc3f73ef5a54349eb7c4c63aefb7dfe6b6492947851ffa44079efdbfff07a26e68a0f7ea3801e03ab3fdc29acdc36cd315b9fbdb8a60963c7cb95f2de43 + languageName: node + linkType: hard + "workbox-webpack-plugin@npm:^6.5.4": version: 6.6.0 resolution: "workbox-webpack-plugin@npm:6.6.0" @@ -16597,6 +16766,16 @@ __metadata: languageName: node linkType: hard +"workbox-window@npm:7.0.0, workbox-window@npm:^7.0.0": + version: 7.0.0 + resolution: "workbox-window@npm:7.0.0" + dependencies: + "@types/trusted-types": ^2.0.2 + workbox-core: 7.0.0 + checksum: 486ceaf2c04953cd73fe04760929a9c42818b57fffbbaca3fc9065cfd6bf3f5a571d2ea78db177e548a98041c8752faa360dda8eaf0f10b8638ef3eb1b696b13 + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0"