// https://nuxt.com/docs/api/configuration/nuxt-config import { buildSiteBootInlineScript } from './lib/site-theme-init.js' export default defineNuxtConfig({ compatibilityDate: '2026-04-29', future: { compatibilityVersion: 3 }, devtools: { enabled: false }, modules: ['./modules/nuxt-ssr-paths-write.mjs', '@nuxtjs/tailwindcss'], /** * 기본 cssPath(assets/css/tailwind.css)가 없으면 패키지의 tailwind.css가 먼저 주입되어 * main.css와 @tailwind 이중 로딩·스타일 꼬임이 날 수 있어 엔트리를 main.css로 통일한다. */ tailwindcss: { cssPath: '~/assets/css/main.css' }, components: [ { path: '~/components', pathPrefix: false } ], experimental: { appManifest: false }, vite: { server: { watch: { usePolling: true, interval: 150 } } }, css: ['~/assets/css/main.css'], app: { head: { htmlAttrs: { lang: 'ko' }, title: 'sori.studio', meta: [ { name: 'description', content: 'sori.studio 개인 블로그' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' } ], script: [ { key: 'site-boot', type: 'text/javascript', tagPriority: 'critical', innerHTML: buildSiteBootInlineScript(process.env.NUXT_PUBLIC_SITE_TITLE || 'sori.studio') } ] } }, runtimeConfig: { databaseUrl: process.env.DATABASE_URL || '', databaseName: process.env.DATABASE_NAME || '', adminEmail: process.env.ADMIN_EMAIL || '', adminPassword: process.env.ADMIN_PASSWORD || '', memberSessionSecret: process.env.MEMBER_SESSION_SECRET || '', analyticsHashSecret: process.env.ANALYTICS_HASH_SECRET || '', resendApiKey: process.env.RESEND_API_KEY || '', resendFromEmail: process.env.RESEND_FROM_EMAIL || '', emailOtpPepper: process.env.EMAIL_OTP_PEPPER || '', uploadDir: process.env.UPLOAD_DIR || '/uploads', maxFileSize: Number(process.env.MAX_FILE_SIZE || 10485760), maxVideoFileSize: Number(process.env.MAX_VIDEO_FILE_SIZE || 209715200), maxAudioFileSize: Number(process.env.MAX_AUDIO_FILE_SIZE || 52428800), maxDocumentFileSize: Number(process.env.MAX_DOCUMENT_FILE_SIZE || 52428800), avatarMinWidth: Number(process.env.AVATAR_MIN_WIDTH || 96), avatarMinHeight: Number(process.env.AVATAR_MIN_HEIGHT || 96), avatarMaxWidth: Number(process.env.AVATAR_MAX_WIDTH || 512), avatarMaxHeight: Number(process.env.AVATAR_MAX_HEIGHT || 512), avatarWebpQuality: Number(process.env.AVATAR_WEBP_QUALITY || 82), public: { siteUrl: process.env.NUXT_PUBLIC_SITE_URL || 'https://sori.studio', siteTitle: process.env.NUXT_PUBLIC_SITE_TITLE || 'sori.studio', maxFileSize: Number(process.env.MAX_FILE_SIZE || 10485760), maxVideoFileSize: Number(process.env.MAX_VIDEO_FILE_SIZE || 209715200), maxAudioFileSize: Number(process.env.MAX_AUDIO_FILE_SIZE || 52428800), maxDocumentFileSize: Number(process.env.MAX_DOCUMENT_FILE_SIZE || 52428800) } } })