#!/usr/bin/env node // ===================================================== // 專案快速設置腳本 // ===================================================== const { execSync } = require('child_process'); const fs = require('fs'); const path = require('path'); console.log('🚀 開始設置 AI 展示平台...\n'); // 檢查 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.0.0 或更高版本'); console.error(` 當前版本: ${nodeVersion}`); process.exit(1); } console.log(`✅ Node.js 版本: ${nodeVersion}`); } // 檢查 pnpm function checkPnpm() { console.log('🔍 檢查 pnpm...'); try { execSync('pnpm --version', { stdio: 'pipe' }); console.log('✅ pnpm 已安裝'); } catch (error) { console.log('⚠️ pnpm 未安裝,正在安裝...'); try { execSync('npm install -g pnpm', { stdio: 'inherit' }); console.log('✅ pnpm 安裝成功'); } catch (installError) { console.error('❌ pnpm 安裝失敗,請手動安裝'); process.exit(1); } } } // 安裝依賴 function installDependencies() { console.log('📦 安裝專案依賴...'); try { execSync('pnpm install', { stdio: 'inherit' }); console.log('✅ 依賴安裝完成'); } catch (error) { console.error('❌ 依賴安裝失敗'); process.exit(1); } } // 檢查環境變數文件 function checkEnvFile() { console.log('🔍 檢查環境變數文件...'); const envFile = path.join(process.cwd(), '.env.local'); const envExampleFile = path.join(process.cwd(), 'env.example'); if (!fs.existsSync(envFile)) { if (fs.existsSync(envExampleFile)) { console.log('📝 創建環境變數文件...'); fs.copyFileSync(envExampleFile, envFile); console.log('✅ 環境變數文件已創建 (.env.local)'); console.log('⚠️ 請編輯 .env.local 文件並填入正確的配置'); } else { console.log('⚠️ 未找到 env.example 文件'); } } else { console.log('✅ 環境變數文件已存在'); } } // 測試資料庫連接 function testDatabaseConnection() { console.log('🔍 測試資料庫連接...'); try { execSync('pnpm run test:db', { stdio: 'inherit' }); console.log('✅ 資料庫連接測試成功'); } catch (error) { console.log('⚠️ 資料庫連接測試失敗,請檢查配置'); console.log(' 您可以稍後運行: pnpm run test:db'); } } // 執行資料庫遷移 function runMigration() { console.log('🗄️ 執行資料庫遷移...'); try { execSync('pnpm run migrate', { stdio: 'inherit' }); console.log('✅ 資料庫遷移完成'); } catch (error) { console.log('⚠️ 資料庫遷移失敗,請檢查資料庫配置'); console.log(' 您可以稍後運行: pnpm run migrate'); } } // 顯示完成信息 function showCompletionMessage() { console.log('\n🎉 設置完成!'); console.log('\n📋 下一步操作:'); console.log('1. 編輯 .env.local 文件,填入正確的資料庫配置'); console.log('2. 運行資料庫遷移: pnpm run migrate'); console.log('3. 測試資料庫連接: pnpm run test:db'); console.log('4. 啟動開發服務器: pnpm run dev'); console.log('\n📚 更多信息請查看:'); console.log('- README-DATABASE.md (資料庫文檔)'); console.log('- PROJECT_ANALYSIS.md (專案解析)'); console.log('- SOFTWARE_SPECIFICATION.md (軟體規格)'); } // 主函數 async function main() { try { checkNodeVersion(); checkPnpm(); installDependencies(); checkEnvFile(); testDatabaseConnection(); runMigration(); showCompletionMessage(); } catch (error) { console.error('❌ 設置過程中發生錯誤:', error.message); process.exit(1); } } // 執行設置 if (require.main === module) { main().catch(console.error); } module.exports = { main };