UNPKG

@vite-pwa/create-pwa

Version:
28 lines (26 loc) 2.98 kB
import{rmSync as n,renameSync as y}from"node:fs";import{p as C,a as P,b,g as k,M as w}from"../shared/create-pwa.DNW-qV5p.mjs";import{e as r}from"../index.mjs";import"fs";import"node:path";import"node:process";import"node:url";import"child_process";import"path";import"readline";import"events";function S(i){const{rootPath:o,name:a,themeColor:p,framework:d,customServiceWorker:m,prompt:c,offline:f,reloadSW:g,pwaAssets:u}=i,t=d==="solid-ts";r(`${o}/src/PWABadge.${t?"t":"j"}sx`,s=>{let e=s;if(f)e=e.replace("<!-- @BEGIN -->","").replace("<!-- @END -->","");else{e=e.replace("offlineReady: [offlineReady, setOfflineReady],","").replace("setOfflineReady(false)","");const v=e.indexOf('<div class="begin">'),h=e.indexOf("</Show></div>"),$=e.slice(h+13);e=e.slice(0,v),e+=` <Show when={needRefresh()}> <div class={styles.Toast}> <div class={styles.Message}> <span id="toast-message">New content available, click on reload button to update.</span> </div> <div> <button class={styles.ToastButton} onClick={() => updateServiceWorker()}>Reload</button> <button class={styles.ToastButton} onClick={() => close()}>Close</button> </div> </div> </Show>`,e+=$}return g?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}),r(`${o}/index.html`,s=>{const e=s.replace("Vite PWA + Solid",`${a}`);return u?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="${p}"> <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"> `)}),r(`${o}/src/App.${t?"t":"j"}sx`,s=>s.replace("App logo",`${a} logo`).replace("<h1>Vite PWA + Solid</h1>",`<h1>${a}</h1>`)),m?(n(`${o}/src/${c?"claims":"prompt"}-sw.${t?"t":"j"}s`),y(`${o}/src/${c?"prompt":"claims"}-sw.${t?"t":"j"}s`,`${o}/src/sw.${t?"t":"j"}s`)):(n(`${i.rootPath}/src/prompt-sw.${t?"t":"j"}s`,{recursive:!0}),n(`${i.rootPath}/src/claims-sw.${t?"t":"j"}s`,{recursive:!0}));const l=C(` import { defineConfig } from 'vite' import solid from 'vite-plugin-solid' // https://vitejs.dev/config/ export default defineConfig({ plugins: [ solid(), ], }) `);P(l,{from:"vite-plugin-pwa",imported:"VitePWA",constructor:"VitePWA",options:b(t,i,"src",{workbox:{globPatterns:["**/*.{js,css,html,svg,png,ico}"],cleanupOutdatedCaches:!0,clientsClaim:!0},injectManifest:{globPatterns:["**/*.{js,css,html,svg,png,ico}"]}})}),r(`${o}/vite.config.${t?"t":"j"}s`,()=>k(l,w).code)}export{S as customize};