Files
webapp/nuxt.config.ts
2026-01-07 09:10:35 +07:00

239 lines
7.1 KiB
TypeScript

import tailwindcss from '@tailwindcss/vite'
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
compatibilityDate: '2025-07-15',
devtools: { enabled: true },
modules: [
'@nuxtjs/i18n',
'@pinia/nuxt',
'@sentry/nuxt/module',
'@nuxt/eslint',
'nuxt-mapbox',
'@nuxt/icon',
'@formkit/nuxt',
'@nuxtjs/apollo'
],
css: ['~/assets/css/tailwind.css'],
i18n: {
strategy: 'prefix_and_default',
defaultLocale: 'ru',
lazy: true,
langDir: 'locales',
locales: [
{
code: 'ru',
files: [
'ru/about.json',
'ru/aiAssistants.json',
'ru/auth.json',
'ru/billing.json',
'ru/breadcrumbs.json',
'ru/cabinetNav.json',
'ru/catalogAddress.json',
'ru/catalogHub.json',
'ru/catalogHubsSection.json',
'ru/catalogLanding.json',
'ru/catalogMap.json',
'ru/catalogOffer.json',
'ru/catalogOfferCard.json',
'ru/catalogOffersSection.json',
'ru/catalogProduct.json',
'ru/catalogSupplier.json',
'ru/catalogSuppliersSection.json',
'ru/clientOfferForm.json',
'ru/clientOffersList.json',
'ru/clientProfile.json',
'ru/clientRedirect.json',
'ru/clientTeam.json',
'ru/clientTeamSwitch.json',
'ru/common.json',
'ru/cta.json',
'ru/dashboard.json',
'ru/footer.json',
'ru/ganttTimeline.json',
'ru/goods.json',
'ru/howto.json',
'ru/kyc.json',
'ru/kycOverview.json',
'ru/kycRussia.json',
'ru/locations.json',
'ru/nav.json',
'ru/offersNew.json',
'ru/orderCalendar.json',
'ru/orderMap.json',
'ru/orders.json',
'ru/ordersDetail.json',
'ru/ordersList.json',
'ru/profile.json',
'ru/profileAddresses.json',
'ru/roles.json',
'ru/routeMap.json',
'ru/search.json',
'ru/searchPage.json',
'ru/sidebar.json',
'ru/stats.json',
'ru/supplier.json',
'ru/supplierFlow.json',
'ru/teams.json',
'ru/testMap.json',
'ru/testimonials.json',
'ru/timelineStages.json',
],
name: 'Russian'
},
{
code: 'en',
files: [
'en/about.json',
'en/aiAssistants.json',
'en/auth.json',
'en/billing.json',
'en/breadcrumbs.json',
'en/cabinetNav.json',
'en/catalogAddress.json',
'en/catalogHub.json',
'en/catalogHubsSection.json',
'en/catalogLanding.json',
'en/catalogMap.json',
'en/catalogOffer.json',
'en/catalogOfferCard.json',
'en/catalogOffersSection.json',
'en/catalogProduct.json',
'en/catalogSupplier.json',
'en/catalogSuppliersSection.json',
'en/clientOfferForm.json',
'en/clientOffersList.json',
'en/clientProfile.json',
'en/clientRedirect.json',
'en/clientTeam.json',
'en/clientTeamSwitch.json',
'en/common.json',
'en/cta.json',
'en/dashboard.json',
'en/footer.json',
'en/ganttTimeline.json',
'en/goods.json',
'en/howto.json',
'en/kyc.json',
'en/kycOverview.json',
'en/kycRussia.json',
'en/locations.json',
'en/nav.json',
'en/offersNew.json',
'en/orderCalendar.json',
'en/orderMap.json',
'en/orders.json',
'en/ordersDetail.json',
'en/ordersList.json',
'en/profile.json',
'en/profileAddresses.json',
'en/roles.json',
'en/routeMap.json',
'en/search.json',
'en/searchPage.json',
'en/sidebar.json',
'en/stats.json',
'en/supplier.json',
'en/supplierFlow.json',
'en/teams.json',
'en/testMap.json',
'en/testimonials.json',
'en/timelineStages.json',
],
name: 'English'
},
]
},
imports: {
dirs: ['stores/**']
},
components: [
{ path: '~/components', pathPrefix: false },
{ path: '~/components/ui', pathPrefix: false }
],
ssr: true,
app: {
baseURL: '/',
layoutTransition: { name: 'layout', mode: 'out-in' }
},
nitro: {
preset: 'node-server',
storage: {
logto: {
driver: 'fs',
base: './.data/logto'
}
}
},
devServer: {
host: '0.0.0.0',
port: 3000
},
vite: {
plugins: [tailwindcss()],
server: {
fs: {
strict: false
}
}
},
runtimeConfig: {
public: {
odooApiUrl: process.env.NUXT_PUBLIC_ODOO_API_URL || 'https://odoo.optovia.ru',
terminusGraphql: process.env.NUXT_PUBLIC_TERMINUS_GRAPHQL || 'https://terminus.optovia.ru/graphql',
siteUrl: process.env.NUXT_PUBLIC_SITE_URL || 'http://localhost:3000',
langAgentUrl: process.env.NUXT_PUBLIC_LANG_AGENT_URL || 'http://localhost:8000/agent',
novuAppId: process.env.NUXT_PUBLIC_NOVU_APP_ID,
novuBackendUrl: process.env.NUXT_PUBLIC_NOVU_BACKEND_URL,
novuSocketUrl: process.env.NUXT_PUBLIC_NOVU_SOCKET_URL,
sentryDsn: process.env.NUXT_PUBLIC_SENTRY_DSN,
mapboxAccessToken: process.env.NUXT_PUBLIC_MAPBOX_ACCESS_TOKEN || ''
}
},
sentry: {
dsn: process.env.NUXT_PUBLIC_SENTRY_DSN,
environment: process.env.NODE_ENV || 'production',
tracesSampleRate: 0.1
},
mapbox: {
accessToken: process.env.NUXT_PUBLIC_MAPBOX_ACCESS_TOKEN || ''
},
apollo: {
clients: {
default: {
httpEndpoint: process.env.NUXT_PUBLIC_EXCHANGE_GRAPHQL_PUBLIC || 'https://exchange.optovia.ru/graphql/public/',
devtools: { enabled: process.dev }
},
publicGeo: {
httpEndpoint: process.env.NUXT_PUBLIC_GEO_GRAPHQL_PUBLIC || 'https://geo.optovia.ru/graphql/public/',
devtools: { enabled: process.dev }
},
teamsUser: {
httpEndpoint: process.env.NUXT_PUBLIC_TEAMS_GRAPHQL_USER || 'https://teams.optovia.ru/graphql/user/',
devtools: { enabled: process.dev }
},
teamsTeam: {
httpEndpoint: process.env.NUXT_PUBLIC_TEAMS_GRAPHQL_TEAM || 'https://teams.optovia.ru/graphql/team/',
devtools: { enabled: process.dev }
},
exchangeTeam: {
httpEndpoint: process.env.NUXT_PUBLIC_EXCHANGE_GRAPHQL_TEAM || 'https://exchange.optovia.ru/graphql/team/',
devtools: { enabled: process.dev }
},
kycUser: {
httpEndpoint: process.env.NUXT_PUBLIC_KYC_GRAPHQL_USER || 'https://kyc.optovia.ru/graphql/user/',
devtools: { enabled: process.dev }
},
ordersTeam: {
httpEndpoint: process.env.NUXT_PUBLIC_ORDERS_GRAPHQL_TEAM || 'https://orders.optovia.ru/graphql/team/',
devtools: { enabled: process.dev }
},
billingTeam: {
httpEndpoint: process.env.NUXT_PUBLIC_BILLING_GRAPHQL_TEAM || 'https://billing.optovia.ru/graphql/team/',
devtools: { enabled: process.dev }
}
}
}
})