// https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ modules: [ "@nuxt/ui", "@nuxtjs/i18n", "@nuxt/eslint", "@vite-pwa/nuxt", ], devtools: { enabled: true }, pwa: { registerType: "autoUpdate", manifest: { name: "Riwa应用商店", short_name: "Riwa应用商店", description: "Riwa App 下载 - iOS, Android, H5", theme_color: "#3b82f6", background_color: "#ffffff", display: "standalone", scope: "/", start_url: "/", icons: [ { src: "/favicon.svg", sizes: "512x512", type: "image/svg+xml", purpose: "any", }, { src: "/favicon.svg", sizes: "192x192", type: "image/svg+xml", }, ], }, workbox: { navigateFallback: "/", globPatterns: ["**/*.{js,css,html,png,svg,ico}"], cleanupOutdatedCaches: true, runtimeCaching: [ { urlPattern: /^https:\/\/fonts\.googleapis\.com\/.*/i, handler: "CacheFirst", options: { cacheName: "google-fonts-cache", expiration: { maxEntries: 10, maxAgeSeconds: 60 * 60 * 24 * 365, // 1 year }, cacheableResponse: { statuses: [0, 200], }, }, }, { urlPattern: /^https:\/\/fonts\.gstatic\.com\/.*/i, handler: "CacheFirst", options: { cacheName: "gstatic-fonts-cache", expiration: { maxEntries: 10, maxAgeSeconds: 60 * 60 * 24 * 365, // 1 year }, cacheableResponse: { statuses: [0, 200], }, }, }, ], }, client: { installPrompt: true, periodicSyncForUpdates: 3600, }, devOptions: { enabled: true, type: "module", }, injectManifest: { globPatterns: ["**/*.{js,css,html,png,svg,ico}"], }, }, css: [ "~/assets/css/main.css", "~/assets/css/animations.css", ], colorMode: { preference: "light", }, i18n: { defaultLocale: "zh-CN", locales: [ { code: "zh-CN", name: "简体中文", file: "zh-CN.json", }, { code: "en-US", name: "English", file: "en-US.json", }, ], strategy: "no_prefix", detectBrowserLanguage: { useCookie: true, cookieKey: "i18n_locale", redirectOn: "root", }, }, app: { head: { charset: "utf-8", viewport: "width=device-width, initial-scale=1", title: "Riwa App 下载", meta: [ { name: "description", content: "Riwa App 下载 - iOS, Android, H5" }, ], link: [ { rel: "icon", type: "image/svg+xml", href: "/favicon.svg" }, ], }, }, devServer: { host: "0.0.0.0", }, nitro: { prerender: { routes: ["/"], crawlLinks: true, }, }, hooks: { "nitro:config": async function (nitroConfig) { // 预渲染所有应用详情页 const { apps } = await import("./data/apps"); const routes = apps.map(app => `/apps/${app.id}`); nitroConfig.prerender = nitroConfig.prerender || {}; nitroConfig.prerender.routes = [ ...(nitroConfig.prerender.routes || []), ...routes, ]; }, }, compatibilityDate: "2025-12-30", });