- import i18nConfig from "./i18n.config";
- import type { Strategies } from "@nuxtjs/i18n";
- import { resolve } from "path";
- import { readFileSync } from "fs";
- import { fileURLToPath } from "url";
- import { dirname, join } from "path";
-
- // 尝试导入预生成的路由配置,如果文件不存在则使用默认路由
- let prerenderRoutes = [
- "/",
- "/products",
- "/faq",
- "/contact",
- "/about",
- "/en",
- "/ja",
- "/en/products",
- "/ja/products",
- "/en/faq",
- "/ja/faq",
- "/en/contact",
- "/ja/contact",
- "/en/about",
- "/ja/about",
- ];
-
- try {
- const __dirname = dirname(fileURLToPath(import.meta.url));
- const routesPath = join(__dirname, "prerenderRoutes.json");
- prerenderRoutes = JSON.parse(readFileSync(routesPath, "utf-8"));
- console.log(`已加载预渲染路由,共 ${prerenderRoutes.length} 条`);
- } catch (err) {
- console.warn("未找到预渲染路由配置文件,使用默认路由");
- }
-
- // https://nuxt.com/docs/api/configuration/nuxt-config
- export default defineNuxtConfig({
- devtools: { enabled: true },
-
- // 添加CSS
- css: [
- "~/assets/css/tailwind.css",
- "~/assets/css/styles.css",
- "~/assets/icomoon/style.css",
- ],
-
- // 模块
- modules: ["@nuxtjs/i18n", "@nuxt/content"],
-
- // content模块配置
- content: {
- // 配置 Markdown
- build: {
- markdown: {
- // 配置高亮
- highlight: {
- theme: "github-light",
- },
- },
- },
- },
-
- // i18n 配置 (从外部文件加载)
- i18n: {
- ...i18nConfig,
- defaultLocale: i18nConfig.defaultLocale as "zh" | "en" | "ja" | undefined,
- strategy: i18nConfig.strategy as Strategies, // 显式类型转换 strategy
- },
-
- // Typescript 配置
- typescript: {
- strict: true,
- shim: false,
- },
-
- // PostCSS配置 (统一到这里)
- postcss: {
- plugins: {
- tailwindcss: {},
- autoprefixer: {},
- },
- },
-
- // 编译配置
- build: {
- transpile: ["@nuxtjs/i18n"],
- },
-
- // 静态站点生成配置
- nitro: {
- prerender: {
- crawlLinks: false, // 不自动抓取链接
- routes: [...prerenderRoutes],
- ignore: ["/api/**", "/admin/**"],
- failOnError: false, // 遇到错误继续生成其他页面
- },
- // 添加图片本地化配置
- publicAssets: [
- {
- dir: "public",
- baseURL: "/",
- },
- ],
- },
-
- // 禁用 payload 提取,优化静态生成
- experimental: {
- payloadExtraction: false,
- renderJsonPayloads: false,
- },
-
- // 页面过渡效果配置
- app: {
- head: {
- charset: "utf-8",
- viewport: "width=device-width, initial-scale=1",
- link: [
- {
- rel: "preload",
- href: "/_nuxt/sqlite3-WT1HU0S9.wasm",
- as: "fetch",
- },
- {
- rel: "preload",
- href: "/_nuxt/sqlite3.WT1HU0S9.wasm",
- as: "fetch",
- },
- ],
- },
- pageTransition: {
- name: "page",
- mode: "out-in",
- },
- },
-
- // 路由配置
- router: {
- options: {
- linkActiveClass: "active",
- },
- },
-
- devServer: {
- host: "0.0.0.0",
- },
-
- compatibilityDate: "2025-05-07",
- });
|