import { version } from "./package.json"; 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; const enableCloudflareImages = Boolean(process.env.ENABLE_CLOUDFLARE_IMAGES); // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ modules: [ "@lewebsimple/nuxt-graphql", "@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, wrangler: { name: "wp-headless", vars: { NODE_ENV: "staging", NUXT_SITE_URL: siteUrl, NUXT_WP_URL: wpUrl, }, }, }, }, graphql: { client: { cache: { keyVersion: version, }, }, server: { context: ["server/graphql/context"], schema: { wp: { type: "remote", endpoint: `${wpUrl}/graphql`, hooks: ["server/graphql/wp-hooks"] }, }, }, }, image: { provider: enableCloudflareImages ? "cloudflare" : "none", cloudflare: { baseURL: `${siteUrl}/` }, domains: [wpDomain], format: ["avif", "webp"], }, robots: { sitemap: `${wpUrl}/sitemap_index.xml`, }, sitemap: false, svgo: { autoImportPath: "~/assets/svg/", componentPrefix: "Svg", defaultImport: "component", }, });