@vite-pwa/create-pwa
Version:
PWA Templates
28 lines (26 loc) • 2.98 kB
JavaScript
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};