import { version } from "./package.json"; const isDev = process.env.NODE_ENV !== "production"; const siteUrl = process.env.NUXT_SITE_URL; if (!siteUrl) { throw new Error(`NUXT_SITE_URL is not defined. Make sure to set it in your build environment variables.`); } const wpUrl = process.env.NUXT_WP_URL; if (!wpUrl) { throw new Error(`NUXT_WP_URL is not defined. Make sure to set it in your build environment variables.`); } const wpDomain = new URL(wpUrl).hostname; // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ modules: [ "@lewebsimple/nuxt-graphql", "@nuxt/eslint", "@nuxt/image", "@nuxt/ui", "@nuxtjs/device", "@nuxtjs/seo", "nuxt-auth-utils", "nuxt-svgo", ], components: { dirs: [ { path: "~/components", pathPrefix: false }, ], }, devtools: { enabled: true }, css: ["~/assets/css/_main.css"], site: { url: siteUrl, name: "WP Headless", defaultLocale: "fr", }, ui: { colorMode: false, }, runtimeConfig: { wpUrl, }, compatibilityDate: "2026-01-01", nitro: { preset: "cloudflare_module", cloudflare: { deployConfig: true, nodeCompat: true, wrangler: { // Project name name: "moonshine", // Cloudflare Workers settings compatibility_date: "2026-01-27", observability: { enabled: true }, preview_urls: false, // Environment variables vars: { NODE_ENV: "staging", NUXT_SITE_URL: siteUrl, NUXT_WP_URL: wpUrl, }, }, }, }, eslint: { config: { stylistic: { arrowParens: true, commaDangle: "always-multiline", indent: 2, quotes: "double", semi: true, }, }, }, graphql: { client: { cache: { keyVersion: version, }, }, server: { context: ["server/graphql/context"], schema: { wp: { type: "remote", endpoint: `${wpUrl}/graphql`, hooks: ["server/graphql/wp-hooks"] }, }, }, }, image: { provider: isDev ? "ipx" : "cloudflare", cloudflare: { baseURL: `${siteUrl}/` }, domains: [wpDomain], format: ["avif", "webp"], }, robots: { sitemap: `${wpUrl}/sitemap_index.xml`, }, sitemap: false, svgo: { autoImportPath: "~/assets/svg/", componentPrefix: "Svg", defaultImport: "component", }, });