#!/usr/bin/env node /** * Vercel 환경 변수 자동 설정 스크립트 * 이 스크립트는 .env.example 파일을 기반으로 Vercel 환경 변수를 설정합니다. */ const { execSync } = require("child_process"); const fs = require("fs"); const path = require("path"); const ENV_EXAMPLE_PATH = path.join(__dirname, "..", ".env.example"); function parseEnvFile(filePath) { if (!fs.existsSync(filePath)) { console.error(`❌ 파일을 찾을 수 없습니다: ${filePath}`); process.exit(1); } const content = fs.readFileSync(filePath, "utf-8"); const envVars = {}; content.split("\n").forEach((line) => { line = line.trim(); if (line && !line.startsWith("#") && line.includes("=")) { const [key, ...values] = line.split("="); if (key.startsWith("VITE_")) { envVars[key.trim()] = values.join("=").trim(); } } }); return envVars; } function setupVercelEnv() { console.log("🚀 Vercel 환경 변수 설정을 시작합니다..."); // Vercel CLI 설치 확인 try { execSync("vercel --version", { stdio: "ignore" }); } catch (error) { console.error("❌ Vercel CLI가 설치되지 않았습니다."); console.error("다음 명령어로 설치해주세요: npm i -g vercel"); process.exit(1); } // .env.example에서 환경 변수 파싱 console.log("📋 .env.example에서 환경 변수를 읽고 있습니다..."); const envVars = parseEnvFile(ENV_EXAMPLE_PATH); if (Object.keys(envVars).length === 0) { console.log("⚠️ VITE_ 접두사를 가진 환경 변수가 없습니다."); return; } console.log("🔧 다음 환경 변수들을 Vercel에 설정해야 합니다:"); Object.keys(envVars).forEach((key) => { console.log(` - ${key}`); }); console.log("\\n📝 Vercel 대시보드에서 수동으로 설정하거나,"); console.log("다음 Vercel CLI 명령어들을 사용하세요:\\n"); // 환경별 설정 명령어 생성 const environments = [ { name: "production", flag: "--prod" }, { name: "preview", flag: "--preview" }, { name: "development", flag: "--dev" }, ]; environments.forEach((env) => { console.log(`# ${env.name.toUpperCase()} 환경:`); Object.keys(envVars).forEach((key) => { const placeholder = `your-${env.name}-${key.toLowerCase().replace("vite_", "").replace(/_/g, "-")}`; console.log(`vercel env add ${key} ${env.flag} # 값: ${placeholder}`); }); console.log(""); }); console.log("💡 팁: Vercel 대시보드 (Settings > Environment Variables)에서"); console.log(" 더 쉽게 환경 변수를 관리할 수 있습니다."); } // 스크립트 실행 if (require.main === module) { setupVercelEnv(); } module.exports = { parseEnvFile, setupVercelEnv };