// @ts-nocheck import compression from "vite-plugin-compression"; // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ ssr: true, // ogImage: { enabled: false }, compatibilityDate: "2024-11-01", css: ["~/assets/css/main.css"], devtools: { enabled: true }, modules: [ "@nuxtjs/tailwindcss", "@nuxt/content", "@nuxtjs/i18n", "@nuxtjs/seo", "@nuxt/image", "vite-plugin-compression", ], nitro: { compressPublicAssets: true, // 启动压缩 // 确保站点地图被正确预渲染 prerender: { routes: [ "/sitemap.xml", "/sitemap_index.xml", "/__sitemap__/zh.xml", "/__sitemap__/en.xml", "/__sitemap__/zh-TW.xml", ], failOnError: false, }, // 添加路由重写规则,使sitemap.xml直接使用预生成的站点地图 routeRules: { "/sitemap.xml": { static: true, }, "/sitemap_index.xml": { static: true, }, }, }, // 图片配置 image: { presets: { default: { modifiers: { quality: 80, format: ".webp", }, }, }, }, // 站点配置 - 关键部分,用于站点地图生成 site: { url: "https://www.pinnovatecloud.com", }, // 运行时配置 runtimeConfig: { public: { siteUrl: "https://www.pinnovatecloud.com", }, }, seo: { sitemap: { sitemapName: "sitemap.xml", autoLastmod: true, xsl: true, // 确保在构建时生成站点地图 cacheTtl: 1, strictNuxtContentPaths: true, // 多语言支持 i18n: { locales: ["zh", "en", "zh-TW"], defaultLocale: "zh", }, // 解决文件vs目录问题 runtimeCacheStorage: { driver: "memory", }, // 确保生成静态文件而不是目录 trailingSlash: false, // 防止重复路径 skipUnresolvedRoutes: true, excludeURLs: [/\/zh-TW\/zh-TW/, /\/en\/en/, /\/zh\/zh/], }, }, render: { compressor: { threshold: 0, gzip: true, brotli: true, }, }, postcss: { plugins: { cssnano: {}, }, }, app: { head: { script: [ // Google tag (gtag.js) { src: "https://www.googletagmanager.com/gtag/js?id=G-MWSDDVNXRQ", async: true, }, { children: ` window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-MWSDDVNXRQ'); `, type: "text/javascript", }, // Google Tag Manager { children: ` (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NHN59C23'); `, type: "text/javascript", }, { innerHTML: `(function(d,w,c){if(w[c])return;var s=d.createElement('script');w[c]=function(){(w[c].z=w[c].z||[]).push(arguments);};s.async=true;s.src='https://static.ahc.ink/hecong.js';if(d.head)d.head.appendChild(s);})(document,window,'_AIHECONG');_AIHECONG('ini',{channelId:'Lu05eK'});`, type: "text/javascript", }, ], link: [ { rel: "icon", type: "image/x-icon", href: "favicon.ico" }, { rel: "stylesheet", href: "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css", }, { rel: "preconnect", href: "https://fonts.googleapis.com" }, { rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin: "", }, { rel: "stylesheet", href: "https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;600;700&display=swap", }, ], }, }, i18n: { strategy: "prefix_and_default", defaultLocale: "zh", lazy: true, langDir: "locales", locales: [ { code: "zh", name: "简体中文", file: "zh.json" }, { code: "zh-TW", name: "繁體中文", file: "zh-TW.json" }, { code: "en", name: "English", file: "en.json" }, ], detectBrowserLanguage: { useCookie: true, cookieKey: "i18n_redirected", alwaysRedirect: true, fallbackLocale: "zh", }, // pages: { // index: { // zh: '/', // en: '/en', // 'zh-TW': '/zh-TW', // }, // about: { // zh: '/about', // en: '/en/about', // 'zh-TW': '/zh-TW/about', // }, // contact: { // zh: '/contact', // en: '/en/contact', // 'zh-TW': '/zh-TW/contact', // }, // solutions: { // zh: '/solutions', // en: '/en/solutions', // 'zh-TW': '/zh-TW/solutions', // }, // products: { // zh: '/products', // en: '/en/products', // 'zh-TW': '/zh-TW/products', // }, // cases: { // zh: '/cases', // en: '/en/cases', // 'zh-TW': '/zh-TW/cases', // }, // tag: { // zh: '/tag', // en: '/en/tag', // 'zh-TW': '/zh-TW/tag', // } // } }, target: "static", // 添加清理选项,避免目录不为空错误 build: { emptyOutDir: true, }, // Vite配置 vite: { plugins: [ compression({ algorithm: "gzip", // 支持 gzip、brotliCompress 等 ext: ".gz", // 默认 .gz threshold: 1024, // 超过 1kb 才压缩 deleteOriginFile: false, // 是否删除原始文件 }), ], // 构建优化配置 build: { minify: "terser", terserOptions: { compress: { drop_console: true, // 生产环境移除console }, }, }, }, });