| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #!/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 "--------------------------------------------------"
|