diff --git a/.env.example b/.env.example index e22096c..930cf6a 100644 --- a/.env.example +++ b/.env.example @@ -4,8 +4,8 @@ DOMAIN=cents.homemade.net.cn # App install identity. Use "dev" for cents-dev and "pro" for cents-pro. APP_VARIANT=pro # Optional overrides for the PWA install name/id. -# VITE_APP_NAME=Cents Dev -# VITE_APP_SHORT_NAME=Cents Dev +# VITE_APP_NAME=有数记账 Dev +# VITE_APP_SHORT_NAME=有数 Dev # VITE_APP_ID=/?app=cents-dev # Public VPS / frps address. diff --git a/apps/web/index.html b/apps/web/index.html index 6cf23aa..845a846 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -3,8 +3,10 @@ - + + + Cents @@ -12,4 +14,3 @@ - diff --git a/apps/web/public/apple-touch-icon-dev.png b/apps/web/public/apple-touch-icon-dev.png new file mode 100644 index 0000000..44df6bc Binary files /dev/null and b/apps/web/public/apple-touch-icon-dev.png differ diff --git a/apps/web/public/apple-touch-icon.png b/apps/web/public/apple-touch-icon.png new file mode 100644 index 0000000..b66c363 Binary files /dev/null and b/apps/web/public/apple-touch-icon.png differ diff --git a/apps/web/public/icon-192.png b/apps/web/public/icon-192.png new file mode 100644 index 0000000..fdee59d Binary files /dev/null and b/apps/web/public/icon-192.png differ diff --git a/apps/web/public/icon-512.png b/apps/web/public/icon-512.png new file mode 100644 index 0000000..d50116a Binary files /dev/null and b/apps/web/public/icon-512.png differ diff --git a/apps/web/public/icon-dev-192.png b/apps/web/public/icon-dev-192.png new file mode 100644 index 0000000..56a13f5 Binary files /dev/null and b/apps/web/public/icon-dev-192.png differ diff --git a/apps/web/public/icon-dev-512.png b/apps/web/public/icon-dev-512.png new file mode 100644 index 0000000..d95e2f8 Binary files /dev/null and b/apps/web/public/icon-dev-512.png differ diff --git a/apps/web/public/icon-dev-maskable-512.png b/apps/web/public/icon-dev-maskable-512.png new file mode 100644 index 0000000..ba5dbe7 Binary files /dev/null and b/apps/web/public/icon-dev-maskable-512.png differ diff --git a/apps/web/public/icon-maskable-512.png b/apps/web/public/icon-maskable-512.png new file mode 100644 index 0000000..0732015 Binary files /dev/null and b/apps/web/public/icon-maskable-512.png differ diff --git a/apps/web/public/icon.svg b/apps/web/public/icon.svg deleted file mode 100644 index 585881e..0000000 --- a/apps/web/public/icon.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/apps/web/public/sw.js b/apps/web/public/sw.js index 692b697..cbd0915 100644 --- a/apps/web/public/sw.js +++ b/apps/web/public/sw.js @@ -1,5 +1,5 @@ const CACHE_NAME = "cents-shell-v3"; -const APP_SHELL = ["/", "/manifest.webmanifest", "/icon.svg"]; +const APP_SHELL = ["/", "/manifest.webmanifest"]; self.addEventListener("install", (event) => { event.waitUntil(caches.open(CACHE_NAME).then((cache) => cache.addAll(APP_SHELL))); diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index 6d65c88..12f66a6 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -7,11 +7,15 @@ type AppVariant = "dev" | "pro"; function appIdentityPlugin(mode: string): Plugin { const env = loadEnv(mode, monorepoRoot, ""); + const envValue = (name: string) => process.env[name] || env[name]; const defaultVariant: AppVariant = mode === "development" ? "dev" : "pro"; - const variant: AppVariant = env.APP_VARIANT === "dev" || env.APP_VARIANT === "pro" ? env.APP_VARIANT : defaultVariant; - const appName = env.VITE_APP_NAME || (variant === "dev" ? "Cents Dev" : "Cents"); - const shortName = env.VITE_APP_SHORT_NAME || appName; - const appId = env.VITE_APP_ID || (variant === "dev" ? "/?app=cents-dev" : "/?app=cents"); + const configuredVariant = envValue("APP_VARIANT"); + const variant: AppVariant = configuredVariant === "dev" || configuredVariant === "pro" ? configuredVariant : defaultVariant; + const appName = envValue("VITE_APP_NAME") || (variant === "dev" ? "有数记账 Dev" : "有数记账"); + const shortName = envValue("VITE_APP_SHORT_NAME") || appName; + const appId = envValue("VITE_APP_ID") || (variant === "dev" ? "/?app=cents-dev" : "/?app=cents"); + const iconPrefix = variant === "dev" ? "icon-dev" : "icon"; + const appleTouchIcon = variant === "dev" ? "/apple-touch-icon-dev.png" : "/apple-touch-icon.png"; const manifest = JSON.stringify( { @@ -21,14 +25,26 @@ function appIdentityPlugin(mode: string): Plugin { description: "家庭共享账本", start_url: "/", display: "standalone", - background_color: "#f7f4ee", - theme_color: "#f7f4ee", + background_color: "#ffffff", + theme_color: "#43c9bd", icons: [ { - src: "/icon.svg", - sizes: "any", - type: "image/svg+xml", - purpose: "any maskable", + src: `/${iconPrefix}-192.png`, + sizes: "192x192", + type: "image/png", + purpose: "any", + }, + { + src: `/${iconPrefix}-512.png`, + sizes: "512x512", + type: "image/png", + purpose: "any", + }, + { + src: `/${iconPrefix}-maskable-512.png`, + sizes: "512x512", + type: "image/png", + purpose: "maskable", }, ], }, @@ -50,7 +66,10 @@ function appIdentityPlugin(mode: string): Plugin { }); }, transformIndexHtml(html) { - return html.replace(/.*<\/title>/, `<title>${appName}`); + return html + .replace(/.*<\/title>/, `<title>${appName}`) + .replace('href="/icon-192.png"', `href="/${iconPrefix}-192.png"`) + .replace('href="/apple-touch-icon.png"', `href="${appleTouchIcon}"`); }, generateBundle() { this.emitFile({