Files
portfolio/nuxt.config.ts
T

136 lines
2.8 KiB
TypeScript

// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
srcDir: 'app',
modules: [
'@nuxt/fonts',
'@nuxt/ui',
'@nuxtjs/i18n',
'@nuxtjs/color-mode',
'@nuxt/image'
],
css: [
'~/assets/css/main.css'
],
postcss: {
plugins: {
'@csstools/postcss-oklab-function': { preserve: false },
'@csstools/postcss-relative-color-syntax': { preserve: false },
'@csstools/postcss-color-mix-function': { preserve: false },
'postcss-preset-env': {
stage: 0,
features: {
'nesting-rules': true
}
},
autoprefixer: {}
}
},
vite: {
css: {
lightningcss: {
targets: {
safari: 15
}
}
}
},
fonts: {
defaults: {
preload: true,
weights: [300, 400, 500, 600, 700],
styles: ['normal'],
subsets: ['latin'],
fallbacks: {
'sans-serif': ['system-ui', 'Segoe UI', 'sans-serif'],
serif: ['Georgia', 'Times New Roman', 'serif']
}
},
families: [
{ name: 'Fraunces', provider: 'google', weights: [600, 700] },
{ name: 'Inter', provider: 'google', weights: [400, 500, 600, 700] },
{ name: 'Outfit', provider: 'google', weights: [300, 400, 500, 600, 700] }
]
},
runtimeConfig: {
public: {
loadPlausible: "", // overrided by env,
},
},
image: {
quality: 80,
domains: [],
screens: {
xs: 320,
sm: 640,
md: 768,
lg: 1024,
xl: 1280,
'2xl': 1536
},
formats: ['webp', 'jpg']
},
typescript: {
shim: false,
tsConfig: {
compilerOptions: {
// https://nuxt.com/blog/v3-5#bundler-module-resolution
moduleResolution: "bundler",
paths: {
"@": ["./app"],
"@/*": ["./app/*"],
},
},
},
},
colorMode: {
classSuffix: "",
preference: "dark",
fallback: "dark",
storageKey: "nuxt-color-mode",
},
//
i18n: {
defaultLocale: 'en',
strategy: 'prefix_except_default',
locales: [
{ code: 'en', language: 'en-US', name: 'English', dir: 'ltr', file: 'en.json' },
{ code: 'fa', language: 'fa-IR', name: 'فارسی', dir: 'rtl', file: 'fa.json' },
],
langDir: 'locales',
detectBrowserLanguage: {
useCookie: true,
cookieKey: 'i18n_redirected',
alwaysRedirect: false,
redirectOn: 'root'
},
// Keep runtime vue-i18n options (legacy, warnings)
vueI18n: '~/i18n.config.ts'
},
// Avoid Windows prerender issues and speed up local builds
nitro: {
prerender: {
crawlLinks: false,
routes: [],
},
},
devtools: { enabled: false },
compatibilityDate: "2024-07-10",
components: {
dirs: [
{
path: '~/components',
pathPrefix: false
}
]
}
})