// 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: { async 'nitro:config'(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', })