Files
sori.studio/nuxt.config.js
zenn 65af30724c feat(member): 회원 썸네일 업로드를 WebP 리사이즈로 표준화
회원 아바타 업로드 시 원본 포맷을 WebP로 변환하고 최대 해상도/품질을 환경변수로 제어해 저장 용량과 전송 비용을 줄인다.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 17:24:29 +09:00

65 lines
1.9 KiB
JavaScript

// https://nuxt.com/docs/api/configuration/nuxt-config
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' }
]
}
},
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 || '',
uploadDir: process.env.UPLOAD_DIR || '/uploads',
maxFileSize: Number(process.env.MAX_FILE_SIZE || 10485760),
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'
}
}
})