import AutoImport from 'unplugin-auto-import/vite' import { NaiveUiResolver } from 'unplugin-vue-components/resolvers' import Components from 'unplugin-vue-components/vite' import { pwa } from './app/config/pwa' import { appDescription } from './app/constants/index' export default defineNuxtConfig({ modules: [ '@vueuse/nuxt', '@unocss/nuxt', '@pinia/nuxt', '@nuxtjs/color-mode', '@vite-pwa/nuxt', '@nuxt/eslint', 'nuxtjs-naive-ui', '@pinia-plugin-persistedstate/nuxt', ], ssr: true, devtools: { enabled: true, }, app: { head: { viewport: 'width=device-width,initial-scale=1', link: [ { rel: 'icon', href: '/favicon.ico', sizes: 'any' }, { rel: 'icon', type: 'image/svg+xml', href: '/nuxt.svg' }, { rel: 'apple-touch-icon', href: '/apple-touch-icon.png' }, ], meta: [ { name: 'viewport', content: 'width=device-width, initial-scale=1' }, { name: 'description', content: appDescription }, { name: 'apple-mobile-web-app-status-bar-style', content: 'black-translucent' }, { name: 'theme-color', media: '(prefers-color-scheme: light)', content: 'white' }, { name: 'theme-color', media: '(prefers-color-scheme: dark)', content: '#222222' }, ] }, }, // css: [ // '@unocss/reset/tailwind.css', // ], colorMode: { classSuffix: '', }, build: { transpile: process.env.NODE_ENV === 'production' ? ['naive-ui', 'vueuc', '@css-render/vue3-ssr', '@juggle/resize-observer'] : ['@juggle/resize-observer'], }, routeRules: { '/': { redirect: '/model-square' }, }, future: { compatibilityVersion: 4, }, experimental: { // when using generate, payload js assets included in sw precache manifest // but missing on offline, disabling extraction it until fixed payloadExtraction: false, renderJsonPayloads: true, typedPages: true, }, compatibilityDate: '2024-08-14', nitro: { devProxy: { '/api': { // 192.168.1.69 海洋 // 192.168.2.22 代 target: `http://192.168.2.22:8080`, changeOrigin: true, prependPath: true, }, }, esbuild: { options: { target: 'esnext', }, }, prerender: { crawlLinks: false, routes: ['/'], ignore: ['/hi'], }, }, vite: { define: { 'process.env.DEBUG': false, }, plugins: [ AutoImport({ imports: [ { 'naive-ui': [ 'useDialog', 'useMessage', 'useNotification', 'useLoadingBar', ], }, ], }), Components({ resolvers: [NaiveUiResolver()], }), ], // 避免 vite 热更新时出现警告 // optimizeDeps: { // include: ['date-fns-tz/esm/formatInTimeZone'] // } }, eslint: { config: { standalone: false, nuxt: { sortConfigKeys: true, }, }, }, pwa, })