mirror of
https://github.com/cloud-shuttle/leptos-shadcn-ui.git
synced 2025-12-22 22:00:00 +00:00
151 lines
3.9 KiB
Bash
Executable File
151 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Production Build Script for Leptos shadcn/ui
|
|
# Handles Tailwind CSS compilation and Leptos build
|
|
|
|
set -e
|
|
|
|
echo "=== 🏗️ PRODUCTION BUILD FOR LEPTOS SHADCN/UI ==="
|
|
echo ""
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Function to print colored output
|
|
print_status() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Check if we're in the right directory
|
|
if [ ! -f "Cargo.toml" ]; then
|
|
print_error "Please run this script from the project root directory"
|
|
exit 1
|
|
fi
|
|
|
|
print_status "Building Tailwind CSS..."
|
|
|
|
# Navigate to Leptos example directory
|
|
cd book-examples/leptos
|
|
|
|
# Debug: show current directory
|
|
print_status "Current directory: $(pwd)"
|
|
print_status "Checking for Tailwind CSS file: style/tailwind.css"
|
|
if [ -f "style/tailwind.css" ]; then
|
|
print_success "Tailwind CSS file found"
|
|
else
|
|
print_error "Tailwind CSS file not found at style/tailwind.css"
|
|
ls -la style/
|
|
exit 1
|
|
fi
|
|
|
|
# Check if we have the right tools
|
|
if command -v pnpm &> /dev/null; then
|
|
print_status "Using pnpm for Tailwind CSS build..."
|
|
|
|
# Install Tailwind CSS if not already installed
|
|
if [ ! -f "node_modules/.bin/tailwindcss" ]; then
|
|
print_status "Installing Tailwind CSS..."
|
|
pnpm add -D tailwindcss
|
|
fi
|
|
|
|
# Build Tailwind CSS
|
|
pnpm exec tailwindcss -i style/tailwind.css -o style/tailwind.output.css --minify
|
|
print_success "Tailwind CSS built successfully!"
|
|
|
|
elif command -v npx &> /dev/null; then
|
|
print_status "Using npx for Tailwind CSS build..."
|
|
npx tailwindcss -i style/tailwind.css -o style/tailwind.output.css --minify
|
|
print_success "Tailwind CSS built successfully!"
|
|
|
|
else
|
|
print_warning "Neither pnpm nor npx found. Attempting to use system Tailwind CSS..."
|
|
|
|
# Try to use system Tailwind CSS
|
|
if command -v tailwindcss &> /dev/null; then
|
|
tailwindcss -i style/tailwind.css -o style/tailwind.output.css --minify
|
|
print_success "Tailwind CSS built successfully using system installation!"
|
|
else
|
|
print_error "No Tailwind CSS build tool found. Please install one of:"
|
|
echo " - pnpm add -D tailwindcss"
|
|
echo " - npm install -D tailwindcss"
|
|
echo " - cargo install tailwindcss-cli"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Verify Tailwind CSS was built
|
|
if [ ! -f "style/tailwind.output.css" ]; then
|
|
print_error "Tailwind CSS build failed - output file not found"
|
|
exit 1
|
|
fi
|
|
|
|
print_status "Building Leptos application with Trunk..."
|
|
|
|
# Clean previous builds
|
|
trunk clean
|
|
|
|
# Build with production optimizations
|
|
trunk build --release
|
|
|
|
# Check if build was successful
|
|
if [ ! -f "dist/index-*.js" ]; then
|
|
print_error "Leptos build failed - no output files found"
|
|
exit 1
|
|
fi
|
|
|
|
print_success "Production build completed successfully!"
|
|
|
|
# Show build output sizes
|
|
echo ""
|
|
echo "=== 📊 BUILD OUTPUT SIZES ==="
|
|
|
|
WASM_FILE=$(find dist -name "*.wasm" | head -1)
|
|
JS_FILE=$(find dist -name "index-*.js" | head -1)
|
|
CSS_FILE=$(find dist -name "*.css" | head -1)
|
|
|
|
if [ -n "$WASM_FILE" ]; then
|
|
WASM_SIZE=$(du -h "$WASM_FILE" | cut -f1)
|
|
echo "WASM Bundle: $WASM_SIZE"
|
|
fi
|
|
|
|
if [ -n "$JS_FILE" ]; then
|
|
JS_SIZE=$(du -h "$JS_FILE" | cut -f1)
|
|
echo "JavaScript Bundle: $JS_SIZE"
|
|
fi
|
|
|
|
if [ -n "$CSS_FILE" ]; then
|
|
CSS_SIZE=$(du -h "$CSS_FILE" | cut -f1)
|
|
echo "CSS Bundle: $CSS_SIZE"
|
|
fi
|
|
|
|
echo ""
|
|
print_success "Production build is ready!"
|
|
print_status "Output directory: dist/"
|
|
print_status "You can now deploy the contents of the dist/ directory"
|
|
|
|
# Return to project root
|
|
cd ../..
|
|
|
|
echo ""
|
|
echo "=== 🎯 NEXT STEPS ==="
|
|
echo "1. Test the production build: cd book-examples/leptos && trunk serve"
|
|
echo "2. Analyze bundle sizes: make analyze-bundle"
|
|
echo "3. Run E2E tests: make test-e2e"
|
|
echo "4. Move to Phase 2: Error Boundaries & Resilience"
|