| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #!/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)..."
- TIMESTAMP=$(date +%Y%m%d_%H%M%S)
- NEW_DIST_DIR="dist_$TIMESTAMP"
- # Строим сразу в новую папку через переменную окружения
- VITE_OUT_DIR=$NEW_DIST_DIR npm run build
- # Обработка перехода от папки к симлинку
- 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 "--------------------------------------------------"
|