build_frontend.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. # Скрипт для чистой сборки фронтенда для production
  3. set -e # Остановка при любой ошибке
  4. echo "🚀 Начинаем сборку Radionica3D Frontend (Production)..."
  5. # 1. Проверка окружения
  6. if ! command -v npm &> /dev/null; then
  7. echo "❌ Ошибка: npm не установлен."
  8. exit 1
  9. fi
  10. # 2. Установка зависимостей
  11. echo "📦 Установка NPM-зависимостей (clean install)..."
  12. npm install --legacy-peer-deps
  13. # 3. Генерируем локализации и проверяем типы
  14. echo "🌐 Генерация локализаций и проверка типов..."
  15. npm run i18n:generate && npx vue-tsc --noEmit
  16. # 5. Запускаем сборку Vue
  17. echo "🔨 Сборка проекта (Vite / Vue 3)..."
  18. npm run build
  19. # Сохраняем сборку в директорию с таймштампом и переключаем симлинк
  20. TIMESTAMP=$(date +%Y%m%d_%H%M%S)
  21. NEW_DIST_DIR="dist_$TIMESTAMP"
  22. echo "Success! Moving build to $NEW_DIST_DIR and switching symlink..."
  23. mv dist $NEW_DIST_DIR
  24. # Обработка перехода от папки к симлинку
  25. if [ -d "dist" ] && [ ! -L "dist" ]; then
  26. echo "Found legacy dist directory, backing it up..."
  27. mv dist dist_legacy_backup
  28. fi
  29. # Атомарное переключение
  30. ln -sfn $NEW_DIST_DIR dist_tmp
  31. mv -T dist_tmp dist
  32. # Удаляем старые сборки (оставляем 5 последних)
  33. ls -dt dist_* | grep -E '^dist_[0-9]{8}_[0-9]{6}$' | tail -n +6 | xargs -r rm -rf || true
  34. echo "--------------------------------------------------"
  35. echo "✅ Готово! Продакшен-файлы переключены на: $NEW_DIST_DIR"
  36. echo "Симлинк ./dist теперь указывает на свежую сборку."
  37. echo "--------------------------------------------------"