head 인라인 스크립트로 data-theme 선적용, 로고 캐시 스플래시 추가. 메인 커버는 업로드 후 저장 버튼에서 이미지·텍스트 일괄 반영. Co-authored-by: Cursor <cursoragent@cursor.com>
80 lines
2.4 KiB
JavaScript
80 lines
2.4 KiB
JavaScript
// 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()
|
|
}
|
|
]
|
|
}
|
|
},
|
|
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 || '',
|
|
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),
|
|
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'
|
|
}
|
|
}
|
|
})
|