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