build and create deploy production
This commit is contained in:
92
build-chunked.sh
Executable file
92
build-chunked.sh
Executable file
@@ -0,0 +1,92 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Build script bertahap untuk menghindari memory overload
|
||||
# Tetap membangun SEMUA file yang diperlukan tapi secara bertahap
|
||||
|
||||
echo "🔨 Starting chunked production build..."
|
||||
|
||||
# Set memory limit
|
||||
export NODE_OPTIONS="--max-old-space-size=1536"
|
||||
export NODE_ENV=production
|
||||
|
||||
# Clean previous build
|
||||
echo "🧹 Cleaning previous build..."
|
||||
rm -rf public/build/*
|
||||
|
||||
# Fungsi untuk build dengan retry
|
||||
build_with_retry() {
|
||||
local config_file=$1
|
||||
local attempt=1
|
||||
local max_attempts=3
|
||||
|
||||
while [ $attempt -le $max_attempts ]; do
|
||||
echo "🔄 Build attempt $attempt of $max_attempts..."
|
||||
|
||||
if vite build --config $config_file; then
|
||||
echo "✅ Build successful on attempt $attempt"
|
||||
return 0
|
||||
else
|
||||
echo "❌ Build failed on attempt $attempt"
|
||||
if [ $attempt -lt $max_attempts ]; then
|
||||
echo "⏳ Waiting 5 seconds before retry..."
|
||||
sleep 5
|
||||
# Clear memory caches
|
||||
sync && echo 3 > /proc/sys/vm/drop_caches 2>/dev/null || true
|
||||
fi
|
||||
attempt=$((attempt + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
echo "📦 Building all assets with memory optimization..."
|
||||
|
||||
# Try building with production config first
|
||||
if build_with_retry "vite.config.production.js"; then
|
||||
echo "🎉 Build completed successfully!"
|
||||
echo "📊 Build summary:"
|
||||
du -sh public/build/* 2>/dev/null || echo "Build files created"
|
||||
|
||||
# Count generated files
|
||||
echo "📁 Generated files:"
|
||||
find public/build -type f | wc -l | xargs echo "Total files:"
|
||||
|
||||
else
|
||||
echo "❌ Build failed after all attempts!"
|
||||
echo ""
|
||||
echo "💡 Alternative solutions:"
|
||||
echo " 1. ✨ Build locally: npm run build:local"
|
||||
echo " 2. 🔧 Increase server memory/swap"
|
||||
echo " 3. ☁️ Use GitHub Actions CI/CD"
|
||||
echo " 4. 🚀 Use deployment services (Vercel, Netlify)"
|
||||
echo ""
|
||||
echo "🏠 For local build and deploy:"
|
||||
echo " npm run build:local"
|
||||
echo " ./deploy.sh your-username your-server.com /path/to/project"
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🔍 Verifying all essential files are built..."
|
||||
|
||||
# Check for essential files
|
||||
essential_files=(
|
||||
"public/build/manifest.json"
|
||||
"public/build/assets"
|
||||
)
|
||||
|
||||
missing_files=()
|
||||
for file in "${essential_files[@]}"; do
|
||||
if [ ! -e "$file" ]; then
|
||||
missing_files+=("$file")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${#missing_files[@]} -eq 0 ]; then
|
||||
echo "✅ All essential files are present!"
|
||||
else
|
||||
echo "⚠️ Missing files:"
|
||||
printf ' %s\n' "${missing_files[@]}"
|
||||
fi
|
||||
Reference in New Issue
Block a user