UNPKG

@vite-pwa/create-pwa

Version:
17 lines (15 loc) 2.93 kB
import{rmSync as n,renameSync as h}from"node:fs";import{p as v,a as $,b as P,g as b,M as k}from"../shared/create-pwa.DNW-qV5p.mjs";import{e as i}from"../index.mjs";import"fs";import"node:path";import"node:process";import"node:url";import"child_process";import"path";import"readline";import"events";function y(a){const{rootPath:o,name:s,themeColor:l,framework:m,customServiceWorker:d,prompt:c,offline:f,reloadSW:u,pwaAssets:g}=a,t=m==="preact-ts";i(`${o}/src/PWABadge.${t?"t":"j"}sx`,r=>{let e=r;return f||(e=e.replace("offlineReady: [offlineReady, setOfflineReady],","").replace("setOfflineReady(false)","").replace("{ (offlineReady || needRefresh)","{ (needRefresh)").replace("{ offlineReady",'<span id="toast-message">New content available, click on reload button to update.</span>').replace('? <span id="toast-message">App ready to work offline</span>',"").replace(': <span id="toast-message">New content available, click on reload button to update.</span>}',"").replace('{ needRefresh && <button className="PWABadge-toast-button" onClick={() => updateServiceWorker(true)}>Reload</button> }','<button className="PWABadge-toast-button" onClick={() => updateServiceWorker(true)}>Reload</button>')),u?e=e.replace("PERIODIC_SYNC_COMMENT","check for updates every hour").replace("const period = 0","const period = 60 * 60 * 1000"):e=e.replace("PERIODIC_SYNC_COMMENT",`periodic sync is disabled, change the value to enable it, the period is in milliseconds // You can remove onRegisteredSW callback and registerPeriodicSync function`),e}),i(`${o}/index.html`,r=>{const e=r.replace("Vite PWA + Preact",`${s}`);return g?e.replace('<link rel="icon" type="image/svg+xml" href="/favicon.svg" />',""):e.replace('<link rel="icon" type="image/svg+xml" href="/favicon.svg" />',` <meta name="theme-color" content="${l}"> <link rel="icon" href="/favicon.ico" sizes="48x48"> <link rel="icon" href="/favicon.svg" sizes="any" type="image/svg+xml"> <link rel="apple-touch-icon" href="/apple-touch-icon-180x180.png"> `)}),i(`${o}/src/app.${t?"t":"j"}sx`,r=>r.replace("App logo",`${s} logo`).replace("<h1>Vite PWA + Preact</h1>",`<h1>${s}</h1>`)),d?(n(`${o}/src/${c?"claims":"prompt"}-sw.${t?"t":"j"}s`),h(`${o}/src/${c?"prompt":"claims"}-sw.${t?"t":"j"}s`,`${o}/src/sw.${t?"t":"j"}s`)):(n(`${a.rootPath}/src/prompt-sw.${t?"t":"j"}s`,{recursive:!0}),n(`${a.rootPath}/src/claims-sw.${t?"t":"j"}s`,{recursive:!0}));const p=v(` import { defineConfig } from 'vite' import preact from '@preact/preset-vite' // https://vitejs.dev/config/ export default defineConfig({ plugins: [ preact(), ], }) `);$(p,{from:"vite-plugin-pwa",imported:"VitePWA",constructor:"VitePWA",options:P(t,a,"src",{workbox:{globPatterns:["**/*.{js,css,html,svg,png,ico}"],cleanupOutdatedCaches:!0,clientsClaim:!0},injectManifest:{globPatterns:["**/*.{js,css,html,svg,png,ico}"]}})}),i(`${o}/vite.config.${t?"t":"j"}s`,()=>b(p,k).code)}export{y as customize};