schon/storefront/nuxt.config.ts
2026-02-27 21:59:51 +03:00

114 lines
2.5 KiB
TypeScript

import { resolve } from 'node:path';
import { fileURLToPath, URL } from 'node:url';
import { i18nConfig } from './i18n/i18.config';
export default defineNuxtConfig({
compatibilityDate: '2025-07-15',
ssr: true,
devtools: {
enabled: true,
},
typescript: {
strict: true,
},
modules: [
'@nuxtjs/i18n',
'@nuxt/icon',
'@pinia/nuxt',
'@nuxtjs/apollo',
'@vueuse/nuxt',
'@element-plus/nuxt',
'nuxt-marquee',
'@nuxt/hints',
'@nuxt/image',
],
i18n: i18nConfig,
apollo: {
autoImports: true,
clients: {
default: {
httpEndpoint: `https://api.${process.env.SCHON_BASE_DOMAIN}/graphql/`,
connectToDevTools: true,
authType: 'Bearer',
authHeader: 'X-SCHON-AUTH',
tokenStorage: 'cookie',
tokenName: `${process.env.SCHON_PROJECT_NAME?.toLowerCase().replace(/\s+/g, '-')}-access`,
},
},
},
runtimeConfig: {
public: {
schonProjectName: process.env.SCHON_PROJECT_NAME,
schonBaseDomain: process.env.SCHON_BASE_DOMAIN,
},
},
app: {
head: {
charset: 'utf-8',
viewport: 'width=device-width, initial-scale=1',
title: process.env.SCHON_PROJECT_NAME,
titleTemplate: `${process.env.SCHON_PROJECT_NAME} | %s`,
link: [
{
rel: 'icon',
type: 'image/x-icon',
href: `https://${process.env.SCHON_BASE_DOMAIN}/favicon.ico`,
},
],
},
pageTransition: {
name: 'opacity',
mode: 'out-in',
},
},
css: [
'./app/assets/styles/main.scss',
'./app/assets/styles/global/fonts.scss',
'swiper/css',
'swiper/css/pagination',
'swiper/css/navigation',
'swiper/css/effect-fade',
'swiper/css/scrollbar',
],
alias: {
'@graphql': fileURLToPath(new URL('./app/graphql', import.meta.url)),
'@appConstants': fileURLToPath(new URL('./app/constants', import.meta.url)),
'@composables': fileURLToPath(new URL('./app/composables', import.meta.url)),
'@types': fileURLToPath(new URL('./types', import.meta.url)),
},
vite: {
envDir: '../',
envPrefix: 'SCHON_',
css: {
preprocessorOptions: {
scss: {
additionalData: `
@use "@/assets/styles/global/variables.scss" as *;
@use "@/assets/styles/global/mixins.scss" as *;
`,
},
},
},
},
image: {
domains: [
`https://api.${process.env.SCHON_BASE_DOMAIN}`,
],
},
hooks: {
'pages:extend'(pages) {
pages.push(
{
name: 'activate-user',
path: '/activate-user',
file: resolve(__dirname, 'app/pages/index.vue'),
},
{
name: 'payment',
path: '/payment',
file: resolve(__dirname, 'app/pages/index.vue'),
},
);
},
},
});