vite.config.js

Download
javascript 112 lines 3.0 KB
  1/**
  2 * Vite ์„ค์ • ํŒŒ์ผ
  3 * https://vitejs.dev/config/
  4 */
  5
  6import { defineConfig } from 'vite';
  7import { resolve } from 'path';
  8
  9export default defineConfig({
 10    // ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์„ค์ •
 11    server: {
 12        port: 3000,           // ํฌํŠธ ๋ฒˆํ˜ธ
 13        open: true,           // ๋ธŒ๋ผ์šฐ์ € ์ž๋™ ์—ด๊ธฐ
 14        cors: true,           // CORS ํ—ˆ์šฉ
 15        host: true,           // ๋„คํŠธ์›Œํฌ์—์„œ ์ ‘๊ทผ ํ—ˆ์šฉ
 16        // ํ”„๋ก์‹œ ์„ค์ • (API ์„œ๋ฒ„ ์—ฐ๋™ ์‹œ)
 17        // proxy: {
 18        //     '/api': {
 19        //         target: 'http://localhost:8080',
 20        //         changeOrigin: true,
 21        //         rewrite: (path) => path.replace(/^\/api/, '')
 22        //     }
 23        // }
 24    },
 25
 26    // ๋นŒ๋“œ ์„ค์ •
 27    build: {
 28        outDir: 'dist',       // ์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ
 29        sourcemap: true,      // ์†Œ์Šค๋งต ์ƒ์„ฑ
 30        minify: 'terser',     // ์••์ถ• ๋ฐฉ์‹ (terser ๋˜๋Š” esbuild)
 31        target: 'es2020',     // ํƒ€๊ฒŸ ๋ธŒ๋ผ์šฐ์ €
 32
 33        // ๋ฒˆ๋“ค ๋ถ„ํ•  ์„ค์ •
 34        rollupOptions: {
 35            input: {
 36                main: resolve(__dirname, 'index.html'),
 37                // ๋‹ค์ค‘ ํŽ˜์ด์ง€ ์•ฑ์˜ ๊ฒฝ์šฐ
 38                // about: resolve(__dirname, 'about.html'),
 39            },
 40            output: {
 41                // ์ฒญํฌ ํŒŒ์ผ ์ด๋ฆ„ ํŒจํ„ด
 42                chunkFileNames: 'assets/js/[name]-[hash].js',
 43                entryFileNames: 'assets/js/[name]-[hash].js',
 44                assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
 45
 46                // ๋ฒค๋” ๋ฒˆ๋“ค ๋ถ„๋ฆฌ
 47                manualChunks: {
 48                    // vendor: ['lodash', 'axios'],
 49                }
 50            }
 51        },
 52
 53        // ์ฒญํฌ ํฌ๊ธฐ ๊ฒฝ๊ณ  ์ž„๊ณ„๊ฐ’ (KB)
 54        chunkSizeWarningLimit: 500,
 55    },
 56
 57    // ๊ฒฝ๋กœ ๋ณ„์นญ ์„ค์ •
 58    resolve: {
 59        alias: {
 60            '@': resolve(__dirname, 'src'),
 61            '@components': resolve(__dirname, 'src/components'),
 62            '@utils': resolve(__dirname, 'src/utils'),
 63            '@styles': resolve(__dirname, 'src/styles'),
 64        }
 65    },
 66
 67    // CSS ์„ค์ •
 68    css: {
 69        // CSS ๋ชจ๋“ˆ ์„ค์ •
 70        modules: {
 71            localsConvention: 'camelCase',
 72        },
 73        // PostCSS ์„ค์ •
 74        postcss: {
 75            plugins: [
 76                // autoprefixer ๋“ฑ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€
 77            ]
 78        },
 79        // ์ „์ฒ˜๋ฆฌ๊ธฐ ์˜ต์…˜
 80        preprocessorOptions: {
 81            scss: {
 82                // ์ „์—ญ ๋ณ€์ˆ˜ ํŒŒ์ผ ์ž๋™ import
 83                // additionalData: `@import "@/styles/variables.scss";`
 84            }
 85        }
 86    },
 87
 88    // ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ ‘๋‘์‚ฌ
 89    envPrefix: 'VITE_',
 90
 91    // ํ”Œ๋Ÿฌ๊ทธ์ธ
 92    plugins: [
 93        // @vitejs/plugin-react
 94        // @vitejs/plugin-vue
 95        // @vitejs/plugin-legacy (๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ € ์ง€์›)
 96    ],
 97
 98    // ์ตœ์ ํ™” ์„ค์ •
 99    optimizeDeps: {
100        // ์‚ฌ์ „ ๋ฒˆ๋“ค๋งํ•  ์˜์กด์„ฑ
101        include: [],
102        // ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง์—์„œ ์ œ์™ธํ•  ์˜์กด์„ฑ
103        exclude: []
104    },
105
106    // ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์„œ๋ฒ„ ์„ค์ •
107    preview: {
108        port: 4173,
109        open: true,
110    }
111});