#!/usr/bin/env node const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); console.log('🚀 DeepAudit 项目设置开始...'); // 检查 Node.js 版本 function checkNodeVersion() { console.log('📋 检查 Node.js 版本...'); const nodeVersion = process.version; const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0]); if (majorVersion < 18) { console.error(`❌ Node.js 版本过低,需要 18+,当前版本: ${nodeVersion}`); process.exit(1); } console.log(`✅ Node.js 版本检查通过: ${nodeVersion}`); } // 检查包管理器 function detectPackageManager() { console.log('📦 检查包管理器...'); const managers = ['pnpm', 'yarn', 'npm']; for (const manager of managers) { try { execSync(`${manager} --version`, { stdio: 'ignore' }); console.log(`✅ 使用 ${manager}`); return manager; } catch (error) { // 继续检查下一个 } } console.error('❌ 未找到包管理器,请安装 npm、yarn 或 pnpm'); process.exit(1); } // 安装依赖 function installDependencies(packageManager) { console.log('📥 安装项目依赖...'); try { execSync(`${packageManager} install`, { stdio: 'inherit' }); } catch (error) { console.error('❌ 依赖安装失败'); process.exit(1); } } // 设置环境变量 function setupEnvironment() { console.log('🔧 检查环境变量配置...'); const envPath = '.env'; const envExamplePath = '.env.example'; if (!fs.existsSync(envPath)) { if (fs.existsSync(envExamplePath)) { fs.copyFileSync(envExamplePath, envPath); console.log('✅ 已创建 .env 文件,请编辑配置必要的环境变量'); console.log(''); console.log('📝 必需配置的环境变量:'); console.log(' VITE_GEMINI_API_KEY - Google Gemini API 密钥'); console.log(''); console.log('📝 可选配置的环境变量:'); console.log(' VITE_SUPABASE_URL - Supabase 项目 URL'); console.log(' VITE_SUPABASE_ANON_KEY - Supabase 匿名密钥'); console.log(' VITE_GITHUB_TOKEN - GitHub 访问令牌'); console.log(''); console.log('⚠️ 请在启动项目前配置 VITE_GEMINI_API_KEY'); } else { console.error('❌ 未找到 .env.example 文件'); process.exit(1); } } else { console.log('✅ .env 文件已存在'); } } // 检查 API Key 配置 function checkApiKey() { const envPath = '.env'; if (fs.existsSync(envPath)) { const envContent = fs.readFileSync(envPath, 'utf8'); if (envContent.includes('VITE_GEMINI_API_KEY=your_gemini_api_key_here') || !envContent.includes('VITE_GEMINI_API_KEY=')) { console.log('⚠️ 请配置 Google Gemini API Key:'); console.log(' 1. 访问 https://makersuite.google.com/app/apikey'); console.log(' 2. 创建 API Key'); console.log(' 3. 在 .env 文件中设置 VITE_GEMINI_API_KEY'); } else { console.log('✅ Gemini API Key 已配置'); } } } // 主函数 function main() { try { checkNodeVersion(); const packageManager = detectPackageManager(); installDependencies(packageManager); setupEnvironment(); checkApiKey(); console.log(''); console.log('🎉 项目设置完成!'); console.log(''); console.log('📚 接下来的步骤:'); console.log(` 1. 编辑 .env 文件,配置必要的环境变量`); console.log(` 2. 运行 '${packageManager} dev' 启动开发服务器`); console.log(' 3. 在浏览器中访问 http://localhost:5173'); console.log(''); console.log('📖 更多信息请查看:'); console.log(' - README.md - 项目介绍和使用指南'); console.log(' - DEPLOYMENT.md - 部署指南'); console.log(' - FEATURES.md - 功能特性详解'); console.log(''); console.log('🆘 需要帮助?'); console.log(' - GitHub Issues: https://github.com/lintsinghua/DeepAudit/issues'); console.log(' - 邮箱: tsinghuaiiilove@gmail.com'); console.log(''); console.log('Happy coding! 🚀'); } catch (error) { console.error('❌ 设置过程中出现错误:', error.message); process.exit(1); } } // 运行主函数 if (require.main === module) { main(); } module.exports = { main };